2015-05-07 35 views
1

我比較在SQL這裏使用compged 4串是摘錄:SQL中,Compged,Min和空白

MIN(compged(a.string1,b.string1), 
compged(a.string1,b.string2), 
compged(a.string2,b.string1),    
compged(a.string2,b.string2)) < 200 

不幸的是有次,從一組字符串和集合B的字符串是空白/空,這意味着壓縮解析爲0和最小找到爲0.有沒有辦法修改,以便比較兩個空白字符串給出一個值大於200或什麼?

預先感謝

+0

其在SAS一個PROC SQL語句的一部分 – matthew

回答

0

的快速和骯髒的選擇是包裝每個字符串的情況下的不同200char字符串字符串爲空或長度爲0(如空字符串不總是爲NULL引用) 所以a.string1 = 200 *'Z',b.string1 = 200 *'X'......

甚至更​​好,用檢查來包裝每個調用,所以如果a.string1爲null或爲空,然後返回另一個字符串的長度。如果兩者均爲空,則返回1000,以便where子句刪除該記錄。

您還可以爲所有字符串添加前綴「A」。這將確保沒有空字符串,並且不會改變距離。但你仍然需要清除兩個字符串都是空的情況。

4

可以計算新的變量來處理這種情況(兩個比較變量是空白),並利用它們的MIN()函數內部:

case 
    when (missing(a.string1) and missing(b.string1)) then 300 
    else compged(a.string1,b.string1) 
end as compged_11, 
/* do the same for combinations 12, 21 and 22 */ 
MIN(calculated compged_11, 
    calculated compged_12, 
    calculated compged_21, 
    calculated compged_22) < 200