在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如果您在实际案例中遇到实施问题,请编辑您的问题,添加表格结构的更多详细信息。