HI,如何从单元格右侧开始选择一对()之间的整数?原因是,可能有另一对包含字符的括号
如果由于某种原因某些记录没有关闭括号怎么办?
e.g. Period | ProgrammeName | Jan | ABC (Children) (30) | Feb | Helloworld (20T (20) |
结果: 三十 20
我有这个脚本,
选择Period,ProgrammeName, substring(ProgrammeName,(len(ProgrammeName) - (patindex('%(%',Reverse(ProgrammeName)))+ 2),(len(ProgrammeName)-1)) 来自表
但它只显示 30) 20)
我一直在操纵它,以便它不会提取')',但可以得到预期的 结果
答案 0 :(得分:4)
如果要准备数据以进行标准化,请快速而脏;
select substring(fld, patindex('%([0-9]%)', fld) + 1, len(fld) - case patindex('%([0-9]%)', fld) when 0 then 0 else patindex('%([0-9]%)', fld) + 1 end)
答案 1 :(得分:3)
您的数据库需要规范化。
无论(30)和(20)代表什么,都应该在他们自己的专栏中。
答案 2 :(得分:2)
希望这是一项迁移任务。您可以使用RegEx尝试它:
http://blogs.msdn.com/b/sqlclr/archive/2005/06/29/regex.aspx
编辑:或此博客文章
http://justgeeks.blogspot.com/2008/08/adding-regular-expressions-regex-to-sql.html