gpt4 book ai didi

tsql - 使用 SUBSTRING AND CHARINDEX 获取字段中的最后一个完整单词

转载 作者:行者123 更新时间:2023-12-02 00:09:58 29 4
gpt4 key购买 nike

我的数据库中有一个字段,出于报告目的,我计划使用以下语句将其截断为 50 个字符。

SELECT (CASE WHEN (LEN(Notes) > 50) THEN SUBSTRING(Notes, 0, 50) + '...' WHEN (LEN(Notes) < 50) THEN SUBSTRING(Notes, 0, LEN(Notes)) + '...' ELSE 'NO NOTES WERE ENTERED' END) AS Notes FROM MyTable

这很好用,但是,我想完成注释字段中的最后一个单词,这样一个单词就不会被截断,所以我想使用 CHARINDEX、SUBSTRING、REVERSE 和可能的 RIGHT 函数来返回最后一个作为大约 50 个字符长的字符串的一部分的完整单词。

我已经试验过了,但运气不佳。

如有任何帮助,我们将不胜感激。

最佳答案

如果您的注释列的长度超过 50,您可以使用 CHARINDEX 查找位置 50 之后的下一个空格,然后使用 SUBSTRING 到该位置。这是一个SQL Fiddle .

SELECT RTRIM(
CASE
-- when the length is less than 50, or the character at position 50 is part of the last word, return the entire string
WHEN LEN(notes) < 50 OR (SUBSTRING(notes,50,1) <> ' ' AND CHARINDEX(' ',notes,50) = 0)
THEN notes
-- when the character at position 50 is a space, return the first 50 characters of the string
WHEN SUBSTRING(notes,50,1) = ' '
THEN LEFT(notes, 50)
-- when the character at position 50 is a word, cut off the string at the next space after 50
WHEN SUBSTRING(notes,50,1) <> ' '
THEN LEFT(notes,CHARINDEX(' ',notes,50))
END) AS first_50
FROM tbl_notes

关于tsql - 使用 SUBSTRING AND CHARINDEX 获取字段中的最后一个完整单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909143/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com