SQL 检索具有特殊字符的字符串
SQL retrieve string that have special character
我正在尝试编写一个查询,select 仅查询末尾带有“+”的值。
这些值是用户 select 从为他们提供参考评论列表的屏幕中获取的文本片段。一段文本末尾可以包含的不同特殊字符是:'+' 或 '~' 或 '|'
这些值存储在单个列中,并且是混合的。
对于此任务,我只需要获取以“+”结尾的评论。
这是存储的文本示例:
Addendum and/or contract providing additional event details and conditions.+
There are charges for these services.+
Notify Mall Crew of electrical needs for activities.+
Provide and maintain access to the Hotel1 during event.~
Provide and maintain access to the Hotel2 during event.~
Event organizer/sponsor is responsible for cleanup of event area1.|
Event organizer/sponsor is responsible for cleanup of event area2.|
这是我的查询(不工作)returns 没有。
SELECT
COMMENT
FROM
PERMIT A
INNER JOIN
PROCESS G ON A.CODE = G.CODE
WHERE
RIGHT(COMMENT, 2) = '+'
AND COMMENT <> ''
非常感谢您的帮助。
所以我没有测试这个,它可能有错别字,但基本思路是将您的文本转换为XML,然后使用XML工具查询结果。这比尝试解析具有动态行数的字符串要容易得多。
首先我们从 table 中提取 xml 字符串,将整个字符串转换为一个 xml 字符串,每一行都有行,并在 CR LF 上使用 replace 来制作分隔符:
SET @xmlstr =
SELECT CAST('<file><row>' + REPLACE(COMMENT,CHAR(13)+CHAR(10),'</row><row>') + '</row></file>' AS XML)
FROM PERMIT A
INNER JOIN PROCESS G ON A.CODE = G.CODE
然后 select 你想要的行来自 XML
SELECT line.a_row
FROM @xmlstr.nodes('/file') AS line(a_row)
WHERE right(line.a_row,1) = '+'
您可以在本网站和网络上找到许多使用此技巧(转换为 xml 以帮助解析)的示例。
我正在尝试编写一个查询,select 仅查询末尾带有“+”的值。
这些值是用户 select 从为他们提供参考评论列表的屏幕中获取的文本片段。一段文本末尾可以包含的不同特殊字符是:'+' 或 '~' 或 '|'
这些值存储在单个列中,并且是混合的。
对于此任务,我只需要获取以“+”结尾的评论。
这是存储的文本示例:
Addendum and/or contract providing additional event details and conditions.+
There are charges for these services.+
Notify Mall Crew of electrical needs for activities.+
Provide and maintain access to the Hotel1 during event.~
Provide and maintain access to the Hotel2 during event.~
Event organizer/sponsor is responsible for cleanup of event area1.|
Event organizer/sponsor is responsible for cleanup of event area2.|
这是我的查询(不工作)returns 没有。
SELECT
COMMENT
FROM
PERMIT A
INNER JOIN
PROCESS G ON A.CODE = G.CODE
WHERE
RIGHT(COMMENT, 2) = '+'
AND COMMENT <> ''
非常感谢您的帮助。
所以我没有测试这个,它可能有错别字,但基本思路是将您的文本转换为XML,然后使用XML工具查询结果。这比尝试解析具有动态行数的字符串要容易得多。
首先我们从 table 中提取 xml 字符串,将整个字符串转换为一个 xml 字符串,每一行都有行,并在 CR LF 上使用 replace 来制作分隔符:
SET @xmlstr =
SELECT CAST('<file><row>' + REPLACE(COMMENT,CHAR(13)+CHAR(10),'</row><row>') + '</row></file>' AS XML)
FROM PERMIT A
INNER JOIN PROCESS G ON A.CODE = G.CODE
然后 select 你想要的行来自 XML
SELECT line.a_row
FROM @xmlstr.nodes('/file') AS line(a_row)
WHERE right(line.a_row,1) = '+'
您可以在本网站和网络上找到许多使用此技巧(转换为 xml 以帮助解析)的示例。