如何比较SQL中不同排序的两个字符串?

时间:2013-10-24 09:18:37

标签: sql string comparison compare

我有以下两个字符串:

[DATEREMIND] = {'20/10/2013' -> ^/} [EVENTDATE] = {^ -> '20/10/2013'/} [OCCURREDFLAG] = {0 -> 1/}    
[EVENTDATE] = {^ -> '20/10/2013'/} [DATEREMIND] = {'20/10/2013' -> ^/} [OCCURREDFLAG] = {0 -> 1/} 

它们的内容完全相同,但排序方式不同。

有没有一种简单的方法可以比较这两个字符串,从而导致它们被视为相等?这不能通过比较长度来完成,因为日期可能会改变,但长度则不会。

1 个答案:

答案 0 :(得分:0)

我通过创建一个函数来解决这个问题,该函数首先将每个字符转换为ASCII值,然后总计ASCII表示中所有数字的值。

功能如下:

create function dbo.getAsciiRepresentation
(
    @string varchar (max)
)
returns int
as
BEGIN
DECLARE @position int, @aux char(3), @myvalFirst varchar(2000)='1' 
DECLARE @intOfVal bigint
declare @total int, @myval varchar(2000)='1'
SET @position = 1            
WHILE @position <= DATALENGTH(@string)
BEGIN
SET @aux = ASCII(SUBSTRING(@string, @position, 1)) 
SET @myvalFirst = @myvalFirst+ replace(@aux,' ','0')
SET @position = @position + 1
END

set @myval = @myvalFirst
set @position = 1    
set @total = 0
WHILE @position <= DATALENGTH(@myval)
BEGIN
set @aux = SUBSTRING(@myval, @position, 1)
set @total = @total + cast(@aux as int)
SET @position = @position + 1
END
return @total
END

只要存在相同的字符,这将返回相同的值,无论顺序如何。