我正在为预先没有数据类型信息的表生成 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 语句?