powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
17 сообщений из 17, страница 1 из 1
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044191
Challenger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую,
подскажите, пожалуйста, как правильно написать запрос SQL?

Есть таблица
tbName
в таблице есть поле fName.
Формат поля fName следующий X1-X2-X3-X4-X5-X6-X7-X8-X9
где Xi - это произвольное числовое или символьное значение.

Как выдернуть из таблицы все записи, где X4 = 3, либо X4=9, либо X4=22.

Экспериментирую с Like, не получается написать такой запрос.
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044208
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Challenger
Приветствую,
подскажите, пожалуйста, как правильно написать запрос SQL?

Есть таблица
tbName
в таблице есть поле fName.
Формат поля fName следующий X1-X2-X3-X4-X5-X6-X7-X8-X9
где Xi - это произвольное числовое или символьное значение.

Как выдернуть из таблицы все записи, где X4 = 3, либо X4=9, либо X4=22.

Экспериментирую с Like, не получается написать такой запрос.


сплитом, если разделитель всегда, как указано '-'
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044212
Challenger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин


сплитом, если разделитель всегда, как указано '-'


Поясни, что имеешь ввиду. а если можно пример запроса.
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044257
Massa52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Challenger,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @t AS TABLE (fName NVARCHAR(30))
INSERT INTO @t (fName) VALUES(N'X1-X2-X3-4-X5-X6-X7-X8-X9')
INSERT INTO @t (fName) VALUES(N'X1-X2-X3-1-X5-X6-X7-X8-X9')
INSERT INTO @t (fName) VALUES(N'X1-X2-X3-2-X5-X6-X7-X8-X9')
INSERT INTO @t (fName) VALUES(N'X1-X2-X3-3-X5-X6-X7-X8-X9')
INSERT INTO @t (fName) VALUES(N'X1-X2-X3-22-X5-X6-X7-X8-X9')
INSERT INTO @t (fName) VALUES(N'X1-X2-X3-9-X5-X6-X7-X8-X9')
SELECT * FROM @t
WHERE 
     SUBSTRING(fName,  CHARINDEX(N'-',fName, CHARINDEX(N'-',fName, CHARINDEX(N'-',fName) + 1) + 1) + 1 
      ,CHARINDEX(N'-',fName, CHARINDEX(N'-',fName, CHARINDEX(N'-',fName, CHARINDEX(N'-',fName) + 1) + 1) + 1) - 1 - CHARINDEX(N'-',fName, CHARINDEX(N'-',fName, CHARINDEX(N'-',fName) + 1) + 1))
 IN (N'3', N'9', N'22')
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044268
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Challenger,

patindex тоже подходит.
А что с LIKE не так?
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044405
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Challenger
Есть таблица
tbName
в таблице есть поле fName.
Формат поля fName следующий X1-X2-X3-X4-X5-X6-X7-X8-X9
где Xi - это произвольное числовое или символьное значение.

Как выдернуть из таблицы все записи, где X4 = 3, либо X4=9, либо X4=22.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @t table (fName varchar(100))

insert into @t values
('1-2-3-4-5-6-7-8-9'),
('1-2-3-9-5-6-7-8-9'),
('1-2-3-22-5-6-7-8-9')

;with cte as (
	select
		t.fName
		,z.c.value('text()[1]','int') as val
		,row_number()over(partition by t.fName order by z.c) as rn
	from @t t
	cross apply (select cast('<a>'+replace(t.fName, '-', '</a><a>')+'</a>' as xml) as x) a
	cross apply a.x.nodes('/a') as z(c)
)
select fName from cte where val in (3,9,22) and rn = 4


fName1-2-3-22-5-6-7-8-91-2-3-9-5-6-7-8-9
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044477
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Challenger
Ролг Хупин


сплитом, если разделитель всегда, как указано '-'


Поясни, что имеешь ввиду. а если можно пример запроса.


Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT value FROM STRING_SPLIT('X1-X2-X3-X4-X5', '-');
----------------------------------------------------------------
X1
X2
X3
X4
X5
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044481
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

string_split() не показывает порядок. Лучше через openjson(), если хотя бы 2016 версия.
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044486
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael
Ролг Хупин,

string_split() не показывает порядок. Лучше через openjson(), если хотя бы 2016 версия.


С одной стороны - да, а с другой - ТС не писал про порядок, и даже не удосужился написать про версию сервера.
Я ему просто дал наводку
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044498
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

Тогда вы не отличите X4 от любого другого Xi. Порядок нужен.
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044634
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ennor Tiegael
Ролг Хупин,

Тогда вы не отличите X4 от любого другого Xi. Порядок нужен.


секундочку,
во-первых, он мне и на йух не нужен.
во-вторых, ТС не писал об этом.
в-третьих, вам-то , собственно, есть разница?
Спасиба за внимание
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044883
Challenger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробую выполнить такой запрос и получаю ошибку
Функции LEFT или SUBSTRING передан недопустимый параметр длины.



[quot court#22279455
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @t table (fName varchar(100))

insert into @t values
('1-2-3-4-5-6-7-8-9'),
('1-2-3-9-5-6-7-8-9'),
('1-2-3-22-5-6-7-8-9')

;with cte as (
	select
		t.fName
		,z.c.value('text()[1]','int') as val
		,row_number()over(partition by t.fName order by z.c) as rn
	from @t t
	cross apply (select cast('<a>'+replace(t.fName, '-', '</a><a>')+'</a>' as xml) as x) a
	cross apply a.x.nodes('/a') as z(c)
)
select fName from cte where val in (3,9,22) and rn = 4


fName1-2-3-22-5-6-7-8-91-2-3-9-5-6-7-8-9[/quot]
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044886
Challenger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был вопрос про версию сервера
Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright (C) 2017 Microsoft Corporation Standard Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: )
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044927
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Challenger
Был вопрос про версию сервера
Microsoft SQL Server 2017 (RTM) - 14.0.1000.169 (X64) Aug 22 2017 17:04:49 Copyright (C) 2017 Microsoft Corporation Standard Edition (64-bit) on Windows Server 2016 Standard 10.0 <X64> (Build 14393: )


такого вопроса не было, тут вы диджействуете.

Вот, дерзайте
https://stackoverflow.com/questions/10581772/how-to-split-a-comma-separated-value-to-columns
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044962
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Challenger
Пробую выполнить такой запрос и получаю ошибку
Функции LEFT или SUBSTRING передан недопустимый параметр длины.



court

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @t table (fName varchar(100))

insert into @t values
('1-2-3-4-5-6-7-8-9'),
('1-2-3-9-5-6-7-8-9'),
('1-2-3-22-5-6-7-8-9')

;with cte as (
	select
		t.fName
		,z.c.value('text()[1]','int') as val
		,row_number()over(partition by t.fName order by z.c) as rn
	from @t t
	cross apply (select cast('<a>'+replace(t.fName, '-', '</a><a>')+'</a>' as xml) as x) a
	cross apply a.x.nodes('/a') as z(c)
)
select fName from cte where val in (3,9,22) and rn = 4



fName1-2-3-22-5-6-7-8-91-2-3-9-5-6-7-8-9
ты бы показал, что ты там выполняешь ...
тут нет "LEFT или SUBSTRING"
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044967
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для таких запросов люди добавляют сборку с регулярными выражениями и не страдают не пойми чем.
...
Рейтинг: 0 / 0
SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
    #40044986
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, а почему с помощью like то нельзя решить??
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
declare @t table (fName varchar(100))

insert into @t values
('1-2-3-4-5-6-7-8-9'),
('1-2-3-9-5-6-7-8-9'),
('1-2-3-22-5-6-7-8-9'),
(N'X1-X2-X3-4-X5-X6-X7-X8-X9'),
(N'X1-X2-X3-1-X5-X6-X7-X8-X9'),
(N'X1-X2-X3-2-X5-X6-X7-X8-X9'),
(N'X1-X2-X3-3-X5-X6-X7-X8-X9'),
(N'X1-X2-X3-22-X5-X6-X7-X8-X9'),
(N'X1-X2-X3-222-X5-X6-X7-X8-X9'),
(N'X1-X2-X3-9-X5-X6-X7-X8-X9'),
(N'X1-22-X3-21-X5-X6-X7-X8-X9')

Select * from 
@t a
Where
a.fName like '_%[-]_%[-]_%[-][4][-]_%[-]_%[-]_%[-]_%[-]_%'
or
a.fName like '_%[-]_%[-]_%[-][9][-]_%[-]_%[-]_%[-]_%[-]_%'
or
a.fName like '_%[-]_%[-]_%[-][2][2][-]_%[-]_%[-]_%[-]_%[-]_%'
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SQL запрос как написать корректно X1-X2-X3-X4-X5-X6-X7-X8-X9 разобрать
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]