DNa*_*Nac 5 t-sql sql-server replace case sql-server-2014
我有一些数据,其中一些记录包含空行(=没有空格,没有NULL).例如:
LOCALE
en-es
en-uk
uk-uk
Run Code Online (Sandbox Code Playgroud)
当我想选择那个空行时,它很容易:
SELECT LOCALE
FROM ABC
WHERE LOCALE = ''
Run Code Online (Sandbox Code Playgroud)
但是当我尝试按如下方式替换它时,它不起作用,结果仍然是空白行:
SELECT REPLACE(LOCALE,'','WHY') AS 'LOCALE'
FROM ABC
WHERE LOCALE = ''
Run Code Online (Sandbox Code Playgroud)
但如果我用CASE
声明绕过它,它的作用是:
SELECT CASE
WHEN LOCALE LIKE '' THEN 'WHY'
ELSE LOCALE
END AS 'LOCALE'
FROM ABC
WHERE LOCALE = ''
Run Code Online (Sandbox Code Playgroud)
这里有什么问题?为什么REPLACE
功能不起作用?
很明显,这''
意味着空白(非空)并且它也存在于两个连续的字母之间.(因为它是空白的)
因此SQL不能去代替那个与你想要的字符串中的每个字母之间的空白.这就是你不能替换的原因''
检查此查询
SELECT ISNULL(NULLIF(LOCALE, ''),'WHY') AS [LOCALE]
FROM ABC
WHERE LOCALE = ''
Run Code Online (Sandbox Code Playgroud)