gpt4 book ai didi

tsql - T-SQL : How to obtain the exact length of a string in characters?

转载 作者:行者123 更新时间:2023-12-02 04:57:05 26 4
gpt4 key购买 nike

我正在为预先没有数据类型信息的表生成 T-SQL SELECT 语句。在这些语句中,我需要执行取决于表列的原始值的长度的字符串操作操作。

一个示例(但不是唯一的示例)是在字符串中的特定位置插入一些文本,包括将其插入到末尾的选项:

SELECT 
CASE WHEN (LEN ([t0].[Product] = 8)
THEN [t0].[Product] + 'test'
ELSE STUFF ([t0].[Product], 8, 0, 'test')
END
FROM [OrderItem] [t0]

(CASE WHEN + LEN 是必需的,因为 STUFF 不允许我在字符串末尾插入文本。)

问题在于 LEN 排除了尾随空格,这会破坏计算。我知道我可以使用 DATALENGTH,它不排除尾随空格,但我无法将 DATALENGTH 返回的字节转换为 STUFF 所需的字符,因为我不知道 Product 列的类型是 varchar 还是 nvarchar。

那么,如何在没有有关所使用的字符串数据类型的预先信息的情况下生成取决于字符串的确切字符长度的 SQL 语句?

最佳答案

这是我最终使用的:

SELECT   
CASE WHEN ((LEN ([t0].[Product] + '#') - 1) = 8)
THEN [t0].[Product] + 'test'
ELSE STUFF ([t0].[Product], 8, 0, 'test')
END
FROM [OrderItem] [t0]

测量表明 LEN (... + '#') - 1 技巧与单独的 LEN (...) 速度大致相同。

感谢所有好的答案!

关于tsql - T-SQL : How to obtain the exact length of a string in characters?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3750377/

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