我有一些数据,其中一些记录包含空行(=没有空格,没有NULL)。 E.g:
LOCALE
en-es
en-uk
uk-uk
当我想选择那个空白行时,很容易:
SELECT LOCALE
FROM ABC
WHERE LOCALE = ''
但是当我尝试按如下方式替换它时,它不起作用,结果仍然是空行:
SELECT REPLACE(LOCALE,'','WHY') AS 'LOCALE'
FROM ABC
WHERE LOCALE = ''
但如果我用CASE
语句绕过它,它就可以了:
SELECT CASE
WHEN LOCALE LIKE '' THEN 'WHY'
ELSE LOCALE
END AS 'LOCALE'
FROM ABC
WHERE LOCALE = ''
这是什么问题?为什么REPLACE
功能不起作用?
答案 0 :(得分:6)
很明显,''
表示空白(非空),并且它也存在于两个连续的字母之间。 (因为它是空白的)
所以Sql不能继续用你想要的字符串替换每个字母之间的 空白。这就是您无法替换''
检查此查询
SELECT ISNULL(NULLIF(LOCALE, ''),'WHY') AS [LOCALE]
FROM ABC
WHERE LOCALE = ''
答案 1 :(得分:1)
您的替换功能不能替换空白区域。 试试这个
SELECT REPLACE(isnull(ITEM,''),' ','WHY') AS 'LOCALE'
FROM Table1
WHERE ITEM = ''
答案 2 :(得分:1)
这只是一种替代方法 尝试以下方法
select COALESCE(NULLIF('',''), 'WHY' AS 'LOCALE'
FROM ABC
WHERE LOCALE = ''
答案 3 :(得分:1)