2012-01-30 56 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。这应该是你在找什么。

然而作为一个长期的补救这样的问题,建议架构重构。存储复杂数据串并应用字符串操作之后往往比,很容易通过查询来分析的形式存储数据的效率较低。

相关问题