2016-06-15 32 views
5

Mam tabelę, która ma ciąg "null", który chcę zastąpić rzeczywistą wartość NULL.Zastąp ciąg pusty wartością pustą

Jednak gdy próbuję wykonać następujące czynności w moim wybierz

Select Replace(Mark,'null',NULL) from tblname 

zastępuje on wszystkie wiersze, a nie tylko wiersze z łańcucha. Gdybym go zmienić na

Select Replace(Mark,'null',0) from tblname 

Robi co by się spodziewać i zmienić tylko te z napisem 'null'

+0

Zawsze określić (tag) rzeczywista baza danych, z której korzystasz podczas zadawania pytań SQL. – sstan

+0

@GordonLinoff Co ?, nie, to nie prawda, op chce przeciwieństwa 'COALESCE' – Lamak

+1

+1 za pokazanie mi czegoś, co przeoczyłem w doco:" REPLACE zwraca NULL, jeśli którykolwiek z argumentów jest NULL. " Nie wydaje się bardzo logiczne, gdy niektóre wartości 'Mark' nie zawierają podłańcucha' 'null''. –

Odpowiedz

7

Można użyć NULLIF:

SELECT NULLIF(Mark,'null') 
FROM tblname; 
+0

Idealne dziękuję – BlueBird

+0

Każdego dnia uczysz się czegoś nowego S/O! +1 – JiggsJedi

+1

Dobra uwaga na moje błędne odczytanie pytania. –