2012-01-30 60 views
0

我正在使用以下來查找我的數據庫中的城市狀態。如何從字符串sql中最後一次出現字符獲取索引?

SELECT SUBSTRING(Location, PATINDEX('%(%' , Location), LEN(Location)) 
    FROM myTable 

這給我以下類型的結果。

(San Jose, CA) 
(Los Angeles, CO) 
(A Place)(Miami, FL) 
... 

我想在第三個例子的情況下忽略第一組parathesis。

我試着用REVERSE(),但它沒有運氣,也許我用它不正確或也許這不是我的解決方案。任何人都可以幫忙嗎?謝謝!

回答

3

你可以;

;with T(f) as (
    select '' union 
    select 'xxx' union 
    select 'xxx (yyy)' union 
    select 'xxx (yyy) (zzz)' 
) 
select 
    right(f, patindex('%(%', reverse(f) + '(')) 
from T 

>> 

(No column name) 

xxx 
(yyy) 
(zzz) 

刪除+「(」得到毛坯沒有括號。

+0

這真是棒極了! 謝謝! – daveomcd 2012-01-30 16:54:51

0

看一看SQL Server's string manipulation functions。特別是在CHARINDEX。這應該是你在找什麼。

然而作爲一個長期的補救這樣的問題,建議架構重構。存儲複雜數據串並應用字符串操作之後往往比,很容易通過查詢來分析的形式存儲數據的效率較低。

相關問題