2013-10-24 2 views
0

У меня есть следующие две строки:Как сравнить две строки, упорядоченные по-разному в SQL?

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

Они точно таким же содержанием, но упорядоченный по-разному.

Есть ли простой способ сравнить эти две строки, которые приведут к тому, что они будут считаться равными? Это невозможно сделать, сравнивая длину, поскольку даты могут измениться, но длина тогда не будет.

+0

В чем проблема? вы получили какие-либо ошибки? –

+0

Использование = две строки оцениваются как не равные. Я хочу, чтобы они оценивались как равные, так как контент один и тот же, просто упорядочен по-разному. – Free2Rhyme2k

ответ

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 

Это будет возвращать то же значение, пока одни и те же символы присутствуют, независимо от порядка.

Смежные вопросы