【发布时间】:2015-08-26 17:25:00
【问题描述】:
我有一些记录包含空白行的数据(=没有空格,没有 NULL)。例如:
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 功能不起作用?
【问题讨论】:
-
不能替换空字符串。
-
@wewestthemenace 我认为 OP 已经得到了那部分,问题是为什么它不能完成......
-
试试这个 SELECT REPLACE(' ',' ','WHY') AS 'LOCALE' is space is there then you can replace it .空刺你不能
-
REPLACE是“在第一个字符串中查找第二个字符串的每个出现并用第三个字符串替换它”而不是“比较第一个和第二个字符串,如果它们相等,则返回第三个字符串,否则返回第一个字符串" -
@ZoharPeled - 替换空字符串很麻烦,因为它们可能太多了。字符串
AB中的字符A和B之间出现了多少个空字符串? (答案可以是 0、1、99 或任何其他你想得到的正数)
标签: sql-server tsql replace case sql-server-2014