【发布时间】:2019-09-10 00:15:52
【问题描述】:
我正在尝试编写一个查询,该查询仅选择末尾带有“+”的值。
这些值是用户从为他们提供参考 cmets 列表的屏幕中选择的文本片段。一段文本末尾可以有不同的特殊字符:'+' 或 '~' 或 '|'
这些值存储在单个列中,并且是混合的。
对于这项任务,我只需要获取以“+”结尾的 cmets。
以下是存储的文本示例:
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.|
这是我的查询(不工作)它什么都不返回。
SELECT
COMMENT
FROM
PERMIT A
INNER JOIN
PROCESS G ON A.CODE = G.CODE
WHERE
RIGHT(COMMENT, 2) = '+'
AND COMMENT <> ''
非常感谢您的帮助。
【问题讨论】:
-
试试
where comment like '%\r%和where comment like '%\r- 你的 cmets 末尾可能有空格,这会弄乱你的右边 2。 -
你的意思是
\r,就像“一个反斜杠字符后跟一个小写的r”,还是你的意思是“一个回车,由许多C-支持的\r转义序列表示。喜欢语言”?换句话说,您是直接在数据库中看到这些字符,还是在某处的客户端代码中看到这些字符? -
@APH 如果 \r 在中间某处,很容易返回误报。
-
右后的一切都只是噪音。评论怎么可能是 NULL 并且 LEN 不长于 0?如果长度大于 0,它怎么可能是一个空字符串?我认为一个简单的“LIKE '%\r'”会比所有这些东西更简单地替代整个 where 子句。但正如@JeroenMostert 指出的那样,您可能并不是真的在寻找那个字符串,而是在寻找一个 char(10) 或 char(13)
-
以及您发布的示例数据。那是代表一行数据,还是代表七行数据?
标签: sql sql-server tsql text data-retrieval