2016-03-08 40 views
0

我能做到這一點Teradata的SQL:查詢一欄爲具有空間格局(又名where子句來搜索具有空間,在一個字符串的模式)

where Col like '%Mystring%String2%' 

在Teradata的SQL或我可以使用單個字符匹配的?。如何搜索 這樣的內容模式,使用Terdata SQL正則表達式
String<one of more instance of spaces or non alpha chars>string2 IS NOT NULL
IS NOT NULL 在兩個或多個字符串之間有一個或多個空格或其他非字母字符的實例 E.g.考慮這個字符串,它是在PDCR數據庫sqltext的一部分

sel t1.c1, t2.c2, t3.c3 from 
t1 , t2 ,t3 
where t2.Cx is NULL and t3.cy IS NOT NULL and 
t3.Ca is   NULL   AND 
t3.cb is NULL AND   t3.c7 is  NOT NULL 
and t3.c10 not like any ('%searchstring%','%string%','%||||%') 

注意NOTNULLISNULL

間空隙的變化AMT所以我想成立一​​個where條款,倒是檢查各種非alpha的條件,如(這是更多的僞代碼like。sorry abt that)

where Sqltext like '%NOT<1 or more instances of Spaces only>NULL%' 
    or SQLtext like '%,\%<one or more instances of | character%' escape '\' 

這就是我一直在尋找的東西。 REGEXP_SIMILAR似乎很有希望。想看看它是如何能得到長着where條款

+0

數據和期望結果的一些示例將有助於理解您的問題。 \t請閱讀[**如何提問**](http://stackoverflow.com/help/how-to-ask) \t \t這裏是[** START **]( http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)瞭解如何提高您的問題質量並獲得更好的答案。 –

+2

定義*非alpha字符*,可能類似於'REGEXP_SIMILAR(col,'。*?string [^ a-z] + string2。*?','i')' – dnoeth

+0

謝謝。我已經給出了例子。我不是在尋找這裏的輸入,我想要這種輸出類型的答案。 – user1874594

回答

2

使用正則表達式\s尋找空格(空格,製表,CRLF):

WHERE REGEXP_SIMILAR(col,'.*?IS[\s|\|]+NOT.*?','i') = 1 

.*?     -- any characters 
    IS     -- 1st string 
    [\s|\|]+   -- one or more whitespaces and/or | 
      NOT  -- 2nd string 
       .*?' -- any characters 

或者REGEXP_INSTR,這是因爲你不有點短在開始和結束時不需要「任何字符」:

WHERE REGEXP_INSTR(x,'IS[\s|\|]+NOT',1,1,0,'i') > 0 
+0

神話般的節食者! – user1874594

相關問題