2015-03-12 5 views
1

Я обнаружил какое-то поведение, о котором я раньше не знал. Почему эта строка кода не работает?ЗАМЕНИТЬ пустую строку

SELECT REPLACE('','','0') ==> returns '' 

Я не могу даже иметь «там, где это условие». Он просто не работает. У меня это из импортированного excel, где в некоторых ячейках нет значений, но им не удаётся удалить их, если я не использовал функцию LEN ('') = 0.

любые идеи?

+0

Я попытался установить там, где условие - пустая строка, и в моем случае это работает. – Galma88

+0

Я хотел бы посмотреть на [документацию] (http://www.techonthenet.com/sql_server/functions/replace.php) для этого. – CalebB

+0

@ Galma88: он не работает должным образом (от OP). Он не заменяет пустую строку 0. –

ответ

3

В пустой строке нечего заменить. REPLACE заменяет последовательность символов в строке с другим набором символов.

Вы можете использовать NULLIF, чтобы рассматривать его как NULL + COALESCE (или ISNULL):

declare @value varchar(10); 
set @value = ''; 
SELECT COALESCE(NULLIF(@value,''), '0') 

Это возвращает '0'.

+0

хорошо, хороший трюк. Спасибо :-) – Muflix

0

Это действительно работает. Здесь есть два правильных поведения: сначала нужно вернуть пустую строку (что она уже делает), вторая - вернуть бесконечную строку, полную нулей.

+2

Он не хочет возвращать пустую строку из уже пустой строки. Он хочет заменить его на '0'. –

Смежные вопросы