繁体   English   中英

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

[英]How do I get the index from the last occurence of a character in a string sql?

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

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

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

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

在第3个示例的情况下,我想忽略第一组异议。

我尝试使用REVERSE(),但是没有运气,也许我使用不正确,或者这不是我的解决方案。 有人可以帮忙吗? 谢谢!

您可以;

;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)

删除+'('即可获得空白。

看一下SQL Server的字符串操作函数 特别是在CHARINDEX上 这应该是您要寻找的。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM