如何从字符串sql中的字符的最后一次出现获得索引?

时间:2012-01-30 16:45:30

标签: sql string sql-server-2008 substring

我正在使用以下内容在我的数据库中查找城市状态。

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

这会让我得到以下类型的结果。

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

我想在第三个例子中忽略第一组的假设。

我尝试使用REVERSE(),但没有运气,也许我错误地使用它或者这可能不是我的解决方案。任何人都可以帮忙吗?谢谢!

2 个答案:

答案 0 :(得分: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)

删除+'('以获得无空白的空白。

答案 1 :(得分:0)

看看SQL Server's string manipulation functions。尤其是CHARINDEX。这应该是你正在寻找的。

但是,作为对此类问题的长期补救措施,建议使用模式重构。将复杂数据存储为字符串并稍后应用字符串操作通常比以易于通过查询分析的形式存储数据效率低。