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

Откуда:
Сообщений: 82
Может для кого то вопрос покажется слишком простым, но все же...

Есть таблица с данными в которой есть текст с одной точкой и с двумя
...
1.1
1.2
1.3
1.11
1.1.1
1.1.5
1.2.2
1.4


Нужно отобрать только записи, в которых содержится две точки

...
1.1.1
1.1.5
1.2.2



Спасибо, кто сможет помочь.
31 июл 18, 15:43    [21618543]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Bujhm_C,

LEN(Column) - LEN(REPLACE(Column,'.',''))
31 июл 18, 15:45    [21618556]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
Bujhm_C
Спасибо, кто сможет помочь.


+ так?
with data ([val]) as (
select '1.1'  union all 
select '1.2'  union all 
select '1.3'  union all 
select '1.11' union all 
select '1.1.1' union all 
select '1.1.5' union all 
select '1.2.2' union all 
select '1.4')
select val 
from data 
where val like '%.%.%'
31 июл 18, 15:50    [21618577]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
Kopelly
Member

Откуда: Красноярск
Сообщений: 289
komrad,

Пройдут с количеством точек больше 2.
31 июл 18, 15:58    [21618610]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
Bujhm_C
Member

Откуда:
Сообщений: 82
автор
where val like '%.%.%'



Оно! СПС
31 июл 18, 15:58    [21618611]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5162
Kopelly
komrad,

Пройдут с количеством точек больше 2.

пройдут, согласен, но постановке задачи удовлетворяет

Bujhm_C
таблица с данными в которой есть текст с одной точкой и с двумя
...
Нужно отобрать только записи, в которых содержится две точки
31 июл 18, 16:22    [21618684]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
WHERE LEN(REPLACE(val,' ',''))-LEN(REPLACE(REPLACE(val,' ','')),'.','')=2
31 июл 18, 19:08    [21619206]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
select t.val
from ( values('1.1'),('1.2'),('1.3'),('1.11'),('1.1.1'),('1.1.5'),('1.2.2'),('1.4'),('1.2.3.4') ) t(val)
where convert(hierarchyid, '/' + replace(val, '.', '/') + '/').GetLevel() = 3
1 авг 18, 09:03    [21619952]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
Bujhm_C
Member

Откуда:
Сообщений: 82
iap
WHERE LEN(REPLACE(val,' ',''))-LEN(REPLACE(REPLACE(val,' ','')),'.','')=2


Ошибка в коде: Функции replace необходимо 3 аргументов.
1 авг 18, 10:58    [21620439]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Bujhm_C
iap
WHERE LEN(REPLACE(val,' ',''))-LEN(REPLACE(REPLACE(val,' ','')),'.','')=2


Ошибка в коде: Функции replace необходимо 3 аргументов.

скобку переставить вы сами не в состоянии?
1 авг 18, 11:25    [21620560]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
TaPaK
Bujhm_C
пропущено...


Ошибка в коде: Функции replace необходимо 3 аргументов.

скобку переставить вы сами не в состоянии?
Bujhm_C, две скобки, стоящие рядом: переставьте одну из них в самый конец перед "=".
1 авг 18, 12:01    [21620725]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
Shakill
Member

Откуда: мск
Сообщений: 1870
Bujhm_C,

до кучи
select val 
from data 
where parsename(val, 3) is not null
1 авг 18, 12:02    [21620727]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
Bujhm_C,

при вашей постановке задачи годится и более простой вариант от TaPaK (я его не заметил, когда писал).
Мой же вариант годится для подсчёта количества любого символа в строке с любым количеством пробелов,
ибо пробелы сразу удаляются REPLACEом во избежание побочных эффектов функции LEN()
1 авг 18, 12:06    [21620750]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
Bujhm_C
Member

Откуда:
Сообщений: 82
iap
TaPaK
пропущено...

скобку переставить вы сами не в состоянии?
Bujhm_C, две скобки, стоящие рядом: переставьте одну из них в самый конец перед "=".


СПС. Все работает. От изобилия ответов растерялся!
1 авг 18, 13:23    [21621051]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
Любопытный гость
Member

Откуда:
Сообщений: 4
iap
во избежание побочных эффектов функции LEN()
Объясните, если не затруднит, о каких побочных эффектах речь, применительно к задаче автора вопроса?
1 авг 18, 13:47    [21621129]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
invm
Member

Откуда: Москва
Сообщений: 9123
Любопытный гость,

Проблема, из-за игнорирования функцией len концевых пробелов, возникнет, например, если строка будет выглядеть так
'1.1 .'
1 авг 18, 13:56    [21621167]     Ответить | Цитировать Сообщить модератору
 Re: Отобрать по критерию  [new]
Любопытный гость
Member

Откуда:
Сообщений: 4
invm,

Спасибо.
1 авг 18, 20:50    [21622382]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить