Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
FireFox77 Member Откуда: Сообщений: 8 |
Доброго времени суток. Я совсем зеленый новичок. Помогите пожалуйста решить следующую проблему. Есть строка ( тип данных : varchar(max)). В строке ID через запятую ( '123,15978,4564654,7898456,654.....N') Необходимо получить столбец: ID ( тип данных: INT ) 123 15978 4564654 7898456 654 ... ... ... N и результат записать в переменную которая будет обрабатываться в хранимой процедуре Заранее благодарен |
19 июл 13, 18:58 [14591520] Ответить | Цитировать Сообщить модератору |
tanglir Member Откуда: Сообщений: 28966 |
FireFox77, читайте отсюда 8434456 |
20 июл 13, 09:21 [14592838] Ответить | Цитировать Сообщить модератору |
FireFox77 Member Откуда: Сообщений: 8 |
tanglir, Спасибо. |
22 июл 13, 10:18 [14597395] Ответить | Цитировать Сообщить модератору |
FireFox77 Member Откуда: Сообщений: 8 |
Прочитал 8434456 . Все же немножко не то ( или я что не так понял ) Вот что у меня есть на текущий момент : ---------------------------------------- DECLARE @ID VARCHAR(MAX) SELECT @ID='26853260,26853261,26853263' SELECT ID = LEFT(SUBSTRING(@ID,0,(SELECT CHARINDEX(',',@ID))),(SELECT CHARINDEX(',',@ID))) UNION SELECT ID=(REPLACE((RIGHT(@ID,(SELECT CHARINDEX(','.@ID)))),',','')) ---------------------------------------- В результате : ID 1 26853260 2 26853263 А соответственно необходим следующий результат : ID 1 26853260 2 26853261 3 26853263 Есть еще какие нибудь варианты? Заранее благодарен |
22 июл 13, 14:37 [14599321] Ответить | Цитировать Сообщить модератору |
tanglir Member Откуда: Сообщений: 28966 |
FireFox77, курить вот этоSELECT *, SUBSTRING_INDEX(SUBSTRING_INDEX(team.users_id, ',',z.x),',',-1) uid FROM TEAМ JOIN (SELECT 1 X UNION SELECT 2 UNION SELECT 3) z ON 1=1и это
И вообще, CHARINDEX - это функция MSSQL! Вы букву S от буквы Y отличить не можете? |
||
22 июл 13, 14:51 [14599424] Ответить | Цитировать Сообщить модератору |
FireFox77 Member Откуда: Сообщений: 8 |
Пятница вечер... мог и форумом ошибиться. За чем же так громко и сразу на зрение грешить ) Буду дальше гуглить... так как SUBSTRING_INDEX не работает. |
22 июл 13, 15:04 [14599508] Ответить | Цитировать Сообщить модератору |
tanglir Member Откуда: Сообщений: 28966 |
|
||
22 июл 13, 15:09 [14599546] Ответить | Цитировать Сообщить модератору |
FireFox77 Member Откуда: Сообщений: 8 |
Спасибо кЭп, как бы догадался ) Из примера ( который курить мне нужно ) так же нет : AUTO_INCREMENT ; ENGINE=INNODB... Вот этот кусок : INSERT INTO USER(NAME) SELECT SUBSTRING(MD5(RAND()), -8) FROM (SELECT 1 a UNION ALL SELECT 2 a UNION ALL SELECT 3 a UNION ALL SELECT 4 a) a, (SELECT 1 a UNION ALL SELECT 2 a UNION ALL SELECT 3 a UNION ALL SELECT 4 a) b, (SELECT 1 a UNION ALL SELECT 2 a UNION ALL SELECT 3 a UNION ALL SELECT 4 a) c Вообще матюгается и не запускается. |
22 июл 13, 15:15 [14599592] Ответить | Цитировать Сообщить модератору |
tanglir Member Откуда: Сообщений: 28966 |
|
||
22 июл 13, 15:23 [14599651] Ответить | Цитировать Сообщить модератору |
FireFox77 Member Откуда: Сообщений: 8 |
Уже попросил модераторов о переносе темы... И вот сижу пытаюсь сделать аналог. На текущий момент все плачевно. Если бы не было с этим проблем, то соответственно не просил бы помощи )
Сообщение было отредактировано: 22 июл 13, 16:25 |
|||||
22 июл 13, 15:31 [14599704] Ответить | Цитировать Сообщить модератору |
FireFox77 Member Откуда: Сообщений: 8 |
Люди добрые, в принципе нашел решение : declare @str varchar(50), @sql varchar(1000) set @str='1,2,3,4,5' select @sql='select '+ replace(@str,',',' union all select ') select @sql exec(@sql) Только подскажите пожалуйста как результат записать в #tmp ? Заранее спасибо |
22 июл 13, 16:51 [14600147] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
В первом посте вы вопрошали о другом:
Ну так, например, можно: insert #tmp(id) -- или @tmp(id) exec (@sql) |
||||
22 июл 13, 17:11 [14600245] Ответить | Цитировать Сообщить модератору |
FireFox77 Member Откуда: Сообщений: 8 |
В общем да. Спасибо. Рабочий вариант ( по крайней мере у меня и вдруг кому пригодится ) : create table #t (id int) declare @str varchar(MAX), @sql varchar(MAX) set @str='1,2,3,4,5' select @sql='select '+ replace(@str,',',' union all select ') insert into #t exec(@sql) В любом случае спасибо всем И отдельная благодарность создателям форума ) буду часто пользоваться |
||||||
22 июл 13, 17:49 [14600483] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |