在Tsql中,我可以将两个字符串“MY string”与MY string进行比较并显示它们是不同的吗
我需要在两个表之间进行查询并查找不匹配的字段在Tsql中,我可以将两个字符串“MY string”与MY string进行比较并显示它们是不同的吗,string,tsql,String,Tsql,我需要在两个表之间进行查询并查找不匹配的字段 table 1 field locations has "my String" table 2 field locations has "MY string" 它们=按文本,但不按大小写我需要为具有以下数据的此返回false: DECLARE @TableOne TABLE ( [ID] TINYINT ,[Value] VARCHAR(12) ) DECLARE @TableTwo TABLE ( [ID] T
table 1 field locations has "my String"
table 2 field locations has "MY string"
它们=按文本,但不按大小写我需要为具有以下数据的此返回false:
DECLARE @TableOne TABLE
(
[ID] TINYINT
,[Value] VARCHAR(12)
)
DECLARE @TableTwo TABLE
(
[ID] TINYINT
,[Value] VARCHAR(12)
)
INSERT INTO @TableOne ([ID], [Value])
VALUES (1,'my String')
INSERT INTO @TableTwo ([ID], [Value])
VALUES (1,'MY String')
您可以像这样使用set Case-sentive排序规则:
SELECT [TO].[Value]
,[TW].[Value]
FROM @TableOne [TO]
INNER JOIN @TableTwo [TW]
ON [TO].[ID] = [TW].[ID]
AND [TO].[Value] <> [TW].[Value]
COLLATE Latin1_General_CS_AS
SELECT [TO].[Value]
,[TW].[Value]
FROM @TableOne [TO]
INNER JOIN @TableTwo [TW]
ON [TO].[ID] = [TW].[ID]
WHERE HASHBYTES('SHA1', [TO].[Value]) <> HASHBYTES('SHA1', [TW].[Value])
或者使用如下函数:
SELECT [TO].[Value]
,[TW].[Value]
FROM @TableOne [TO]
INNER JOIN @TableTwo [TW]
ON [TO].[ID] = [TW].[ID]
AND [TO].[Value] <> [TW].[Value]
COLLATE Latin1_General_CS_AS
SELECT [TO].[Value]
,[TW].[Value]
FROM @TableOne [TO]
INNER JOIN @TableTwo [TW]
ON [TO].[ID] = [TW].[ID]
WHERE HASHBYTES('SHA1', [TO].[Value]) <> HASHBYTES('SHA1', [TW].[Value])
使用默认的不区分大小写的排序规则顺序-匹配并返回结果
SELECT * FROM @Table1 AS T1
INNER JOIN @Table2 AS T2
ON T1.FieldName = T2.FieldName
指定了区分大小写的排序规则顺序。不匹配
SELECT * FROM @Table1 AS T1
INNER JOIN @Table2 AS T2
ON T1.FieldName = T2.FieldName COLLATE Latin1_General_CS_AS_KS_WS
使用区分大小写的排序规则。或者,您可以将每个字段强制转换为varbinary以进行比较。这是一个在查询中设置排序规则的问题-检查详细信息。我需要执行左连接以查找缺少的值id@table2将为空String@user2529573如果您在实际案例中遇到实施问题,请编辑您的问题,添加表格结构的更多详细信息。