带单行换行符的T-SQL查找字符串(缺少回车符)
我四处寻找,发现了类似的问题,但我找不到确切的答案 有一些输入错误或其他情况会发生,其中一些表的结尾是一个单行换行字符--CHAR(10),前面没有回车符--CHAR(13),这是正确的格式。我对这些行进行了分析,发现有些行具有CR/LF和/或孤立LF 如何查找同时包含CR/LF和孤立LF字符的字符串 这就是我目前掌握的代码带单行换行符的T-SQL查找字符串(缺少回车符),sql,sql-server,tsql,Sql,Sql Server,Tsql,我四处寻找,发现了类似的问题,但我找不到确切的答案 有一些输入错误或其他情况会发生,其中一些表的结尾是一个单行换行字符--CHAR(10),前面没有回车符--CHAR(13),这是正确的格式。我对这些行进行了分析,发现有些行具有CR/LF和/或孤立LF 如何查找同时包含CR/LF和孤立LF字符的字符串 这就是我目前掌握的代码 SELECT example.ID , example.DESCRIPTION WHERE example.DESCRIPTION LI
SELECT
example.ID
, example.DESCRIPTION
WHERE
example.DESCRIPTION LIKE '%' + CHAR(10) + '%'
AND example.DESCRIPTION NOT LIKE '%' + CHAR(13) + CHAR(10) + '%'
它查找仅包含单个LF字符的字符串,而不是同时包含两个字符的字符串
我也尝试过不同的
DESCRIPTION LIKE '%[^CHAR(13)][CHAR(10)]%'
没有任何运气。帮忙
编辑:如果不清楚,正确的格式是CR/LF或CHAR(13)CHAR(10)。这应该可以。使用
PATINDEX
进行稍微复杂的字符串匹配:
DECLARE @T TABLE (S varchar(100))
DECLARE @PAT varchar(10)
SET @PAT = '%[^'+ CHAR(13) + ']' + CHAR(10) + '%'
INSERT INTO @T
VALUES
('AAA')
,('BBB' + CHAR(13) + CHAR(10) + 'BBB')
,('CCC' + CHAR(10) + 'CCC')
SELECT * FROM @T AS t
WHERE PATINDEX(@PAT, S) > 0
这两者在字符串中发生了什么?字符串中是否有单独的LF(如“description”)?或者在最后,他们以CRLFLF结尾?或者你是说在同一个表中,有些行“description”只有LF,而有些行“description”以CRLF结尾?Jayvee有一个很好的问题,因为右侧(description,2)会将其缩小到description结尾,如果是这样的话。你最终会试图替换它们吗?是的,对不起。单个LF位于描述字符串中的任意位置。我的重点不是字符串的结尾,而是在它所在的任何位置查找单独的LF。这可能是一个不确定的问题,但是
AAA
BBB
和CCC
的目的是什么?@user3394493只是演示代码,这样你就可以知道返回哪一行了。
SELECT
example.ID
, example.DESCRIPTION
FROM MyTable
WHERE example.DESCRIPTION LIKE '%'+CHAR(13)+CHAR(10)+'%' --contains CRLF
AND (example.DESCRIPTION LIKE CHAR(10)+'%' --AND (starts with LF
OR example.DESCRIPTION LIKE '%[^'+CHAR(13)+']'+CHAR(10)+'%') -- OR contains [^CR]LF)