如何按算术顺序比较SQL中的字符串?

如何按算术顺序比较SQL中的字符串?,sql,tsql,Sql,Tsql,查询以下两个表: 创建表[dbo]。[MTO] [CorrelationID] [int] IDENTITY(1,1) NOT NULL, [StockA] [nvarchar](5) NOT NULL, [StockB] [nvarchar](5) NOT NULL, [Correlation] [float] NOT NULL, [LengthStr] [nvarchar](5) NOT NULL, [Date] [datetime] NOT NULL 创建表[dbo].[Industr

查询以下两个表:

创建表[dbo]。[MTO]

[CorrelationID] [int] IDENTITY(1,1) NOT NULL,
[StockA] [nvarchar](5) NOT NULL,
[StockB] [nvarchar](5) NOT NULL,
[Correlation] [float] NOT NULL,
[LengthStr] [nvarchar](5) NOT NULL,
[Date] [datetime] NOT NULL

创建表[dbo].[Industries]

[IndustryID] [int] IDENTITY(1,1) NOT NULL,
[Symbol] [nvarchar](5) NOT NULL,
[Sector] [nvarchar](50) NULL,
[Industry] [nvarchar](50) NULL

使用此查询:

从MTCorrelations中选择StockA、StockB、Correlations、LengthStr 哪里 斯托克 从中选择符号 行业=货币中心银行的行业 和 库存 从中选择符号 行业=货币中心银行的行业 按相关描述排序

结果会产生重复,因为表中有重复项,其中StockA与StockB的相关性列在一行中,而另一行中列出的相关性与StockB在StockA列中的相关性相同,反之亦然


由于每个相关性都列出了两次,我想添加一个where子句,将结果限制为stockA按字母顺序排在stockB之前的结果。我在斯托克a和斯托克B之间试了一个<,但没有成功。SQL是否有字符串比较运算符?

为什么不这样做,它更有效,并且不会产生A/B的置换:

SELECT StockA, StockB, Correlation, LengthStr From MTCorrelations
WHERE StockA < StockB AND -- This is to remove the permutations
  EXISTS                  -- Fast check for StockA being within constraints
  (SELECT * 
   FROM Industries 
   WHERE Industry = 'Money Center Banks' AND 
         Symbol = StockA) AND
  EXISTS                  -- Fast check for StockB being within constraints
  (SELECT * 
   FROM Industries 
   WHERE Industry = 'Money Center Banks' AND 
         Symbol = StockB)      
ORDER BY Correlation DESC

啊,著名的计算机软件问题:它不工作。想提供更多细节吗?这基本上就是他想要做的。在和存在将得到