Как мне избавиться от .. Заменить (Заменить (Заменить (Заменить (Заменить (…?) - PullRequest
2 голосов
/ 04 декабря 2008

Я выбираю данные в старой базе данных, в которой есть столбец состояния злоупотребления. Столбец состояния содержит несколько частей информации. Допустимые значения: «Новый контакт ГГГГ», «Онлайн ГГГГ», «Обновлен ГГГГ», «Снят с ГГГГ» и т. Как вы уже догадались, YYYY представляет год ... который мне нужен.

В прошлом я делал что-то похожее на

Rtrim( ltrim( Replace(Replace(Replace(Replace(Replace( …

По сути, замена всех текстовых значений пустой строкой, поэтому единственное, что еще существует, это год. Я все еще могу сделать это, но я думаю, что это смешно, и должен быть лучший способ.

Кто-нибудь знает лучший способ сделать это?

Ответы [ 3 ]

5 голосов
/ 04 декабря 2008

Если вы просто хотите извлечь четырехзначный год из строки, вы можете использовать PATINDEX

SELECT SUBSTRING(FieldName, PATINDEX('%[0-9][0-9][0-9][0-9]%', FieldName), 4)
FROM TableName
1 голос
/ 04 декабря 2008

Все приведенные ответы решают вашу проблему, но правильный ответ - для нормализации вашей базы данных. Если вам нужен год как отдельный элемент, он должен храниться в отдельном столбце.

Все остальное - это просто удаление волос с бородавки, как говорила моя дорогая старая бабушка (она на самом деле никогда не говорила этого, я просто думала об этом, и это звучало довольно круто - наверное, поэтому я не выхожу так много : -).

1 голос
/ 04 декабря 2008

Если год всегда последний 4:

SELECT right(FieldName,4) from table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...