sql-server - SQL Server 2008 将 VARCHAR(50) 转换为唯一标识符

标签 sql-server tsql sql-server-2008 type-conversion uniqueidentifier

我正在尝试将 varchar(50) 列转换为 uniqueidentifier,但此错误一直弹出,我不知道为什么:

"Msg 8169, Level 16, State 2, Line 1 Conversion failed when converting from a character string to uniqueidentifier."

列中的数据当前是有效的唯一标识符。

做我想做的事情的正确方法是什么?

谢谢

最佳答案

是否有包含空字符串的列? IE。 NOT NULL,字符串长度 = 0。

或者您是否有任何带有非标准字符的 GUID? IE。不是 0-9,A-F?

我的应用程序中有一些非标准的 GUID,它们是在我继承它之前创建的...

编辑:

为了将来的帮助,此脚本可以帮助您找到任何无效的行:

SELECT    REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(GUID, '1', '0'), '2', '0'), '3', '0'), '4', '0'), '5', '0'), '6', '0'), '7', '0'), '8', '0'), '9', '0'), 'A', '0'), 'B', '0'), 'C', '0'), 'D', '0'), 'E', '0'), 'F', '0'), COUNT(*)
FROM TABLE
GROUP BY REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(GUID, '1', '0'), '2', '0'), '3', '0'), '4', '0'), '5', '0'), '6', '0'), '7', '0'), '8', '0'), '9', '0'), 'A', '0'), 'B', '0'), 'C', '0'), 'D', '0'), 'E', '0'), 'F', '0')

任何具有无效 Guid 的行都会显示出来,并且可以通过以下方式找到:

SELECT    *, REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(GUID, '1', '0'), '2', '0'), '3', '0'), '4', '0'), '5', '0'), '6', '0'), '7', '0'), '8', '0'), '9', '0'), 'A', '0'), 'B', '0'), 'C', '0'), 'D', '0'), 'E', '0'), 'F', '0')
FROM TABLE
WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(GUID, '1', '0'), '2', '0'), '3', '0'), '4', '0'), '5', '0'), '6', '0'), '7', '0'), '8', '0'), '9', '0'), 'A', '0'), 'B', '0'), 'C', '0'), 'D', '0'), 'E', '0'), 'F', '0') != '00000000-0000-0000-0000-0000000000'

关于sql-server - SQL Server 2008 将 VARCHAR(50) 转换为唯一标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/689802/

相关文章:

sql-server - 将 SQL Server 表导入 HDFS

sql-server - 创建 MSSQL 存储过程以检查 TableA 记录计数。然后将 TableA 记录插入到 TableB

.net - SQL Server 2014内存中上一个事务中止异常

sql - "Join"顺序是否会导致查询性能不同

sql - 如何在 SQL Server 中多次检索行?

c# - 通过 C# 连接到 SQL Server 2008 数据库

sql-server - 使用 TRUNCATE_ONLY 备份日志的替代方案

sql - 调用存储过程时,T-SQL 动态转换参数

sql-server-2008 - 有没有免费的工具可以帮助可视化 SQL Server 2008 R2 中存储过程的逻辑?

sql - 为什么数字 0 计算为空格