gpt4 book ai didi

sql-server - 如何像 SSMS 一样在 T-SQL 中将 TIMESTAMP 值转换为 VARCHAR?

转载 作者:行者123 更新时间:2023-12-02 08:22:18 25 4
gpt4 key购买 nike

我正在尝试将表中的 TIMESTAMP 字段转换为字符串,以便可以将其作为动态 SQL 的一部分进行打印或执行。 SSMS能够做到这一点,所以必须有一个内置的方法来做到这一点。但是,我无法使用 T-SQL 让它工作。

以下正确显示表格结果:

SELECT TOP 1 RowVersion FROM MyTable

它显示0x00000000288D17AE。但是,我需要结果成为更大字符串的一部分。

DECLARE @res VARCHAR(MAX) = (SELECT TOP 1 'test' + CONVERT(BINARY(8), RowVersion) FROM MyTable)
PRINT(@res)

这会产生错误:数据类型 varchar 和 bin 在添加运算符中不兼容

DECLARE @res VARCHAR(MAX) = (SELECT TOP 1 'test' + CONVERT(VARCHAR(MAX), RowVersion) FROM MyTable)
PRINT(@res)

这会产生垃圾字符:test (®

事实上,空格只是空字符并终止字符串,以便使用 EXEC() 运行动态 SQL。

DECLARE @sql VARCHAR(MAX) = 'SELECT TOP 1 ''test'' + CONVERT(VARCHAR(MAX), RowVersion) FROM MyTable'
EXEC (@sql)

这仅显示带有“test”一词的表格结果。动态 SQL 中“test”之后的所有内容都会被切断,因为 CONVERT 函数首先返回终止空字符。

显然,我希望得到的字符串是“test0x00000000288D17AE”,甚至是等价的十进制,在本例中为“test680335278”。

任何想法将不胜感激。

最佳答案

选择“测试”+ CONVERT(NVARCHAR(MAX), CONVERT(BINARY(8), RowVersion), 1)。诀窍是将 1 改为 CONVERT 作为样式,根据 documentation 。 (传递 2 以省略 0x。)

关于sql-server - 如何像 SSMS 一样在 T-SQL 中将 TIMESTAMP 值转换为 VARCHAR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41014533/

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