Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как найтий все не численные элементы в колонке nvarchar?  [new]
unkis
Member

Откуда:
Сообщений: 183
Ребята задача следующая, есть столбец с ClientID nvarchar(50), как правило там находяться численные элементы, тоесть ClientID состоит из чисел, к примеру 000056, 459685, и так далее, но иногда встречается и такой ClientID 'DP0006', который состоит из других символов.

Нужно выбрать только численые ID и посчитать сколько не численных.

Как такое сделать?
6 сен 09, 11:57    [7622867]     Ответить | Цитировать Сообщить модератору
 Re: Как найтий все не численные элементы в колонке nvarchar?  [new]
AnarAlizadeh
Member

Откуда: Тбилиси
Сообщений: 59

DECLARE @Tab TABLE (ID INT IDENTITY(1,1), ClientID NVARCHAR(50))
INSERT INTO @Tab VALUES ('000056')
INSERT INTO @Tab VALUES ('459685')
INSERT INTO @Tab VALUES ('DP0006')
INSERT INTO @Tab VALUES ('123456')
INSERT INTO @Tab VALUES ('321654')
INSERT INTO @Tab VALUES ('aaa475')
INSERT INTO @Tab VALUES ('459685')

--Выбрать только численные
SELECT ID, ClientID
FROM @Tab
WHERE ISNUMERIC(ClientID) = 1

1	000056
2	459685
4	123456
5	321654
7	459685


--Выбрать кол-во НЕчисленных [ClientID]
SELECT COUNT(*) AS [кол-во НЕчисленных] FROM @Tab
WHERE ISNUMERIC(ClientID) = 0

2

6 сен 09, 13:04    [7622964]     Ответить | Цитировать Сообщить модератору
 Re: Как найтий все не численные элементы в колонке nvarchar?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
AnarAlizadeh

DECLARE @Tab TABLE (ID INT IDENTITY(1,1), ClientID NVARCHAR(50))
INSERT INTO @Tab VALUES ('000056')
INSERT INTO @Tab VALUES ('459685')
INSERT INTO @Tab VALUES ('DP0006')
INSERT INTO @Tab VALUES ('123456')
INSERT INTO @Tab VALUES ('321654')
INSERT INTO @Tab VALUES ('aaa475')
INSERT INTO @Tab VALUES ('459685')

--Выбрать только численные
SELECT ID, ClientID
FROM @Tab
WHERE ISNUMERIC(ClientID) = 1

1	000056
2	459685
4	123456
5	321654
7	459685


--Выбрать кол-во НЕчисленных [ClientID]
SELECT COUNT(*) AS [кол-во НЕчисленных] FROM @Tab
WHERE ISNUMERIC(ClientID) = 0

2

непонтно, что считать "численными" ID. Если значения,
которые можно преобразовать к какому-то числовому типу, то это одно.
А если поле может содержать только десятичные цифры, то это другое:
SELECT COUNT(*) AS [кол-во НЕчисленных] FROM @Tab
WHERE ClientID NOT LIKE '%[^0-9]%';
6 сен 09, 13:12    [7622976]     Ответить | Цитировать Сообщить модератору
 Re: Как найтий все не численные элементы в колонке nvarchar?  [new]
AnarAlizadeh
Member

Откуда: Тбилиси
Сообщений: 59
Да iap !!! как всегда ты прав!!! Не побумал о десятичных... И вообще, благодарен тебе, Паганелю, Глори и еще нескольким за полезные и умные подсказки!
6 сен 09, 14:02    [7623030]     Ответить | Цитировать Сообщить модератору
 Re: Как найтий все не численные элементы в колонке nvarchar?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iap
непонтно, что считать "численными" ID. Если значения,
которые можно преобразовать к какому-то числовому типу, то это одно.
А если поле может содержать только десятичные цифры, то это другое:
SELECT COUNT(*) AS [кол-во НЕчисленных] FROM @Tab
WHERE ClientID NOT LIKE '%[^0-9]%';
Ошибка. Написал "[кол-во НЕчисленных]", а запрос-то соответствует "[кол-во численных]"
Для "НЕчисленных" надо, конечно же, заменить NOT LIKE на LIKE
7 сен 09, 11:53    [7625531]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить