Запрос на возврат буквенно-цифровой - PullRequest
1 голос
/ 21 июня 2010

Имеется ли какой-либо запрос, который возвращает только цифры числового значения

Образец

Выбор имени, фамилии, национального идентификатора из контактов

Результаты

FirstName |Фамилия | NationalID Тони | Смит | 934 & # fdsaf $ 34 £ 51 Мэри | Джонс | 655 ^! Ffdat @ 389 £ 2

Ожидаемые результаты

Имя | Фамилия | NationalID Тони | Смит | 934fdsaf34 £51 Мэри | Джонс | 655ffdat389 £ 2

Другими словами, я хочу, чтобы запрос возвращал только цифры и текст:.AZ и 0-9, получая только '$% ^ & * (~>

Ответы [ 3 ]

3 голосов
/ 21 июня 2010

Вы можете попробовать функцию patindex . Например, просто выбрав FirstName, вы удалите первое вхождение не буквенно-цифрового кода:

SELECT replace(FirstName, substring(FirstName, patindex('%[^a-zA-Z0-9]%', FirstName), 1), '') FROM CONTACTS

Чтобы расширить это до удаления всех вхождений, переместите вызов patindex в функцию , как указано здесь :

CREATE FUNCTION CleanVarchar(@Temp VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN

    WHILE PATINDEX('%[^a-zA-Z0-9]%', @Temp) > 0
        SET @Temp = STUFF(@Temp, PATINDEX('%[^a-z^0-9]%', @Temp), 1, '')

    RETURN @TEmp
END

Наконец, вызовите функцию

Select CleanVarchar(FirstName),CleanVarchar(Surname),CleanVarchar(NationalID) From Contacts
1 голос
/ 21 июня 2010

Я не думаю, что это возможно с T-SQL только аккуратно.Но вы могли бы легко предоставить такую ​​функциональность через .NET Assembly для SQL-сервера.В сети есть несколько примеров на эту тему.

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