SQL Server - выберите целое число, которое находится в скобках () - PullRequest
3 голосов
/ 16 июля 2010

Привет, как я могу выбрать целое число, которое находится между парой (), начиная справа от ячейки? Причина в том, что может быть другая пара скобок, содержащих символы

а что если некоторые записи по какой-то причине закрыты скобками ..

e.g. 
Period | ProgrammeName             |  
Jan    | ABC (Children) (30)       |
Feb    | Helloworld (20T (20)      |

Результат: 30 20

У меня есть этот скрипт,

выберите период, имя_программы, подстрока (ProgrammeName, (len (ProgrammeName) - (patindex ('% (%', Reverse (ProgrammeName)))) + 2), (len (ProgrammeName) -1)) из таблицы

но отображается только 30) 20)

Я манипулировал им, чтобы он не извлекал ')', но мог получить ожидаемое Результаты.

Ответы [ 3 ]

4 голосов
/ 16 июля 2010

Быстро и грязно, если вы хотите подготовить данные к нормализации;

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)
3 голосов
/ 16 июля 2010

Ваша база данных нуждается в нормализации.

Все, что представляют (30) и (20), должно быть в их собственном столбце.

2 голосов
/ 16 июля 2010

Надеюсь, это задача миграции.Вы можете попробовать это с 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

...