Сложная подстрока T-SQL - PullRequest
3 голосов
/ 23 апреля 2011

Просто чтобы прояснить ситуацию, я не могу использовать CLR UDF для этого, а SUBSTRING и CHARINDEX просто не подрезать горчицу.

У нас есть система управления поддельными учетными записями с учетными записями, являющимися суб-счетамидругих, лучше описанных здесь (с таблицами тоже :))

Теперь, при условии, что у меня есть учетная запись 2.4.1.3 (очевидно, родитель становится 2.4.1) и, если требуется извлечь'префикс' 2.4.1, чтобы я мог создать другую учетную запись родного брата со следующим идентификатором в строке (предположим, 2.4.1.4), как мне будет разбивать такую ​​строку в T-SQL?

Конечно, подобный способ может быть применен к учетным записям детей, но это просто ириска для этого мороженого.

1 Ответ

2 голосов
/ 23 апреля 2011

Попробуйте что-то вроде этого:

DECLARE @accountno VARCHAR(50) = '2.4.1.3'

SELECT 
   REVERSE(@accountno),
   CHARINDEX('.', REVERSE(@accountno)),
   SUBSTRING(@accountno, 1, LEN(@accountno) - CHARINDEX('.', REVERSE(@accountno)))

Этот третий элемент в выражении SELECT должен быть тем, который извлекает "префикс" 2.4.1 из строки номера вашего счета.

По сути, я делаю переворачивание строки, а затем ищу первое вхождение точки ('.') - первое в перевернутой строке является последним в исходной строке, и это то, что вы хотите извлечь до.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...