我正在尝试比较两种不同的列类型(不是我的工作,这是数据转换项目的一部分)。一个具有类似于以下内容的表单指南:
0CAF3FBC-3C76-420B-B0C4-42867551E3B5
另一个将它们存储为以下内容:
{0CAF3FBC-3C76-420B-B0C4-42867551E3B5}
将这两个表都连接到此列的最佳方式是什么(不幸的是,这两个表都是主键)。到目前为止,我已经尝试过将一个表转换为GUID(但没有成功),并且还尝试构建一个like语句- 但一直不确定如何解决这个问题。
任何帮助将不胜感激。
编辑:
如果是数据,这在语法上是否正确?
inner join report_temp.workflow_lease_proposal lp on wif.form_guid like '%' + lp.form_guid + '%'
当比较具有不同数据类型的值时,SQL Server非常明智。
以下脚本按原样工作,无需任何显式转换
DECLARE @TableA TABLE (VARCHARID VARCHAR(48) PRIMARY KEY) DECLARE @TableB TABLE (GUIDID UNIQUEIDENTIFIER PRIMARY KEY) INSERT INTO @TableA VALUES ('{0CAF3FBC-3C76-420B-B0C4-42867551E3B5}') , ('{0CAF3FBC-3C76-420B-B0C4-42867551E3B6}') , ( '0CAF3FBC-3C76-420B-B0C4-42867551E3B7' ) , ( '0CAF3FBC-3C76-420B-B0C4-42867551E3B8' ) INSERT INTO @TableB VALUES ('{0CAF3FBC-3C76-420B-B0C4-42867551E3B5}') , ( '0CAF3FBC-3C76-420B-B0C4-42867551E3B6' ) , ('{0CAF3FBC-3C76-420B-B0C4-42867551E3B7}') , ( '0CAF3FBC-3C76-420B-B0C4-42867551E3B8' ) SELECT * FROM @TableA a INNER JOIN @TableB b ON b.GUIDID = a.VARCHARID
结果
VARCHARID GUIDID {0CAF3FBC-3C76-420B-B0C4-42867551E3B5} 0CAF3FBC-3C76-420B-B0C4-42867551E3B5 {0CAF3FBC-3C76-420B-B0C4-42867551E3B6} 0CAF3FBC-3C76-420B-B0C4-42867551E3B6 0CAF3FBC-3C76-420B-B0C4-42867551E3B7 0CAF3FBC-3C76-420B-B0C4-42867551E3B7 0CAF3FBC-3C76-420B-B0C4-42867551E3B8 0CAF3FBC-3C76-420B-B0C4-42867551E3B8