Ed *_*mes 10 sql-server uniqueidentifier
由于我当前项目中的监督相当精彩,我们将一些guid存储在一个表中的varchar列中,需要将其与另一个表中的uniqueidentifier列进行比较.
我怎样才能做到这一点?SQL服务器只是说它不能从字符串转换为uniqueidentifier.
Rem*_*anu 18
如果SQL抱怨它无法转换它意味着不仅你将uniqueidentifier存储为varchar,你使用的格式与SQL Server不同(例如你添加了'{'和'}').正确格式化时,SQL完全能够将字符串转换为uniqueidentifier:
declare @u uniqueidentifier;
declare @s varchar(64);
select @u = NEWID();
select @s = CAST(@u as varchar(64));
select CAST(@s as uniqueidentifier), @u, @s;
Run Code Online (Sandbox Code Playgroud)
根据您实际存储uniqueidentifier的方式,您很可能会对数据和代码进行修改以匹配SQL格式(no {}).
将uniqueidentifier转换为varchar:
CAST( uniqueidentifier_col_name as varchar)
Run Code Online (Sandbox Code Playgroud)
我刚刚编写了以下测试脚本:
DECLARE
@Foo Uniqueidentifier
,@Foo2 varchar(50)
SET @Foo = newid()
SET @Foo2 = newId()
print @Foo
print @Foo2
if @Foo = @Foo2
print 'Yes'
else
print 'No'
set @Foo = @Foo2
if @Foo = @Foo2
print 'Yes'
else
print 'No'
Run Code Online (Sandbox Code Playgroud)
在SSMS窗口中或通过slqcmd -i文件运行,结果相同-SQL(2005)进行隐式转换。这支持了我几年前遇到类似问题时从SQL 2000回忆起的内容。
关键是varchar字符串必须匹配guid模式:
归档时间: |
|
查看次数: |
27155 次 |
最近记录: |