有谁知道如何只更改数据库中varchar字段中的单词?它们的格式类似于“奶酪”,“奶酪”,“CheesE”。我想把它们全部改为CHEESE,但我在这些领域也有其他文字。我想知道他们是否是一种方法来单独说出这个词并让它变得更好。
像
这样的东西update table
set field = Upper(cheese)+rest of field
由于
答案 0 :(得分:7)
update table
set field = replace(field, 'cheese', 'CHEESE')
答案 1 :(得分:1)
从您的评论我可以看到子字符串和单词之间的差异。 使用XML作为代理格式,可以进行这种“以字为中心”的转换。
试试这个......
DECLARE @pattern nvarchar(max) = 'cheese'
SELECT
converted =
cast('<a><i>' + REPLACE(field, ' ', '</i><i>') + '</i></a>' as xml)
.query(
'for $x in /a/i return
if (not( ($x) is (/a/i[last()])[1] )) then
if (data($x) = sql:variable("@pattern")) then
concat(upper-case($x), "")
else
concat($x, "")
else
if (data($x) = sql:variable("@pattern")) then
string(upper-case($x))
else
string(data($x))')
.value('.', 'nvarchar(max)')
FROM table
我确信通过解析char-by-char表达式可以做到这一点,但我想用XML尝试:)