我有10个表和超过10000个包含
的记录
如何搜索
并在数据库中替换它?
由于
等于0xEF,0xBB,0xBF
怎么能搜索到这个?
我使用此代码
WITH foo(myvarbincolumn) AS
(
SELECT text from BPM_Letters
)
SELECT *
FROM foo
WHERE CONVERT(VARCHAR(max), myvarbincolumn) COLLATE Arabic_CI_AS
LIKE '%' + CONVERT(NVARCHAR(max), CHAR(0xEF)+CHAR(0xBB)+CHAR(0xBF)) + '%'
我在stackoverflow中找到了这个代码,但它不完整。
script of BPM_Letters
这段代码找不到任何记录!
请帮帮我
答案 0 :(得分:3)
我写了一个查询,通过下面的查询找到那个奇怪的字符:
SELECT cast(LEFT(text,1) AS VARBINARY(MAX)) from BPM_Letters
,结果是0xFFFE。所以我写了这个查询,它运作得很好:
UPDATE BPM_Letters Set text=REPLACE(text,0xFFFE,'');
答案 1 :(得分:1)
这个CTE怎么样:
StripBOM AS
(
SELECT CASE
WHEN LEFT(text,3) = 0xEFBBBF
THEN CONVERT(varbinary(max),SUBSTRING(text, 4, LEN(text)))
ELSE text
END AS text
FROM BPM_Letters
)
它应该为您提供一个新表格,其中所有BOM字符都已被剥离。
P.S。此代码假设为text
'字段的类型为varbinary
。
答案 2 :(得分:0)
这是一个基于其他答案的简单答案:
UPDATE BPM_Letters SET text=substr(text, 4) WHERE left(text, 3) = 0xEFBBBF;
我已经对此进行了测试,但它确实有效。