Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / удалить все символы из строки кроме цифр / 25 сообщений из 32, страница 1 из 2
05.04.2007, 15:56
    #34440984
rank
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
Как средствами T-SQL удалить из строки все символы кроме цифр?
...
Рейтинг: 0 / 0
05.04.2007, 16:14
    #34441071
Stimo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
Код: plaintext
1.
2.
3.
4.
5.
declare @str varchar( 50 ), @str2 varchar( 50 )
select @str = 'abcd23bb55', @str2 = ''

select @str2 = @str2 + case when substring(@str, number,  1 )  like '[0-9]' then substring(@str, number,  1 ) else '' end
from master..spt_values
where type = 'P' and number <= len(@str) and number <>  0 
можно заменить spt_values своей таблицей
...
Рейтинг: 0 / 0
05.04.2007, 16:19
    #34441098
lepton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
Stimo
Код: plaintext
1.
2.
3.
4.
5.
declare @str varchar( 50 ), @str2 varchar( 50 )
select @str = 'abcd23bb55', @str2 = ''

select @str2 = @str2 + case when substring(@str, number,  1 )  like '[0-9]' then substring(@str, number,  1 ) else '' end
from master..spt_values
where type = 'P' and number <= len(@str) and number <>  0 
можно заменить spt_values своей таблицей

+ order by number
...
Рейтинг: 0 / 0
05.04.2007, 16:32
    #34441165
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
Код: plaintext
1.
2.
3.
DECLARE @S VARCHAR( 100 );
SET @S='mjvfge45564368uivf6808976208 976 017896tx 08716t';
WHILE @S LIKE '%[^0-9]%' SET @S=STUFF(@S,PATINDEX('%[^0-9]%',@S), 1 ,'');
SELECT @S;
...
Рейтинг: 0 / 0
05.04.2007, 16:47
    #34441226
rank
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
iap
Код: plaintext
1.
2.
3.
DECLARE @S VARCHAR( 100 );
SET @S='mjvfge45564368uivf6808976208 976 017896tx 08716t';
WHILE @S LIKE '%[^0-9]%' SET @S=STUFF(@S,PATINDEX('%[^0-9]%',@S), 1 ,'');
SELECT @S;
этот подходит
вариант с master..spt_values может не подойти, если строка слишком длинная
всем спасибо
...
Рейтинг: 0 / 0
05.04.2007, 17:09
    #34441313
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
rankвариант с master..spt_values может не подойти, если строка слишком длинная
всем спасибоНа самом деле этот вариант самый быстрый. А чтобы он работал всегда, создайте специальную таблицу с целыми числами от 0 до, например, 1000000, и используйте её вместо master..spt_values.
...
Рейтинг: 0 / 0
05.04.2007, 17:24
    #34441367
rank
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
iap rankвариант с master..spt_values может не подойти, если строка слишком длинная
всем спасибоНа самом деле этот вариант самый быстрый. А чтобы он работал всегда, создайте специальную таблицу с целыми числами от 0 до, например, 1000000, и используйте её вместо master..spt_values.С таблицей на 1млн.записей - это перебор: содавать динамически - долго, держать в базе постоянно - накладно
А самый быстрый вариант - CLR-UDF, если бы не SQL2K.
...
Рейтинг: 0 / 0
05.04.2007, 17:29
    #34441393
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
rank iap rankвариант с master..spt_values может не подойти, если строка слишком длинная
всем спасибоНа самом деле этот вариант самый быстрый. А чтобы он работал всегда, создайте специальную таблицу с целыми числами от 0 до, например, 1000000, и используйте её вместо master..spt_values.С таблицей на 1млн.записей - это переборНикакого перебора - такая таблица есть, наверно, у большинства посетителей этого форума. :-))
...
Рейтинг: 0 / 0
05.04.2007, 17:38
    #34441430
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
rank iap rankвариант с master..spt_values может не подойти, если строка слишком длинная
всем спасибоНа самом деле этот вариант самый быстрый. А чтобы он работал всегда, создайте специальную таблицу с целыми числами от 0 до, например, 1000000, и используйте её вместо master..spt_values.С таблицей на 1млн.записей - это перебор: содавать динамически - долго, держать в базе постоянно - накладно
А самый быстрый вариант - CLR-UDF, если бы не SQL2K.
Про накладно
1 000 000 со стольцов типа int это 4 000 000 байт или около 4Мб места в базе
...
Рейтинг: 0 / 0
05.04.2007, 17:46
    #34441473
Stimo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
rank iap rankвариант с master..spt_values может не подойти, если строка слишком длинная
всем спасибоНа самом деле этот вариант самый быстрый. А чтобы он работал всегда, создайте специальную таблицу с целыми числами от 0 до, например, 1000000, и используйте её вместо master..spt_values.С таблицей на 1млн.записей - это перебор: содавать динамически - долго, держать в базе постоянно - накладно
А самый быстрый вариант - CLR-UDF, если бы не SQL2K.
???
extended procedures (в 2000 они есть) на порядок быстрее CLR-UDF. другое дело, что деваться некуда.
...
Рейтинг: 0 / 0
05.04.2007, 17:55
    #34441508
rank
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
Stimo???
extended procedures (в 2000 они есть) на порядок быстрее CLR-UDF. другое дело, что деваться некуда.а в С++ есть классы для работы с регулярными выражениями?
...
Рейтинг: 0 / 0
06.04.2007, 08:33
    #34442182
Stimo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
rank Stimo???
extended procedures (в 2000 они есть) на порядок быстрее CLR-UDF. другое дело, что деваться некуда.а в С++ есть классы для работы с регулярными выражениями?
Не по адресу, но всё же http://www.tropicsoft.com/Components/RegularExpression/ . Первый результат в гугле.
К тому же, esp - не обязательно с++.
...
Рейтинг: 0 / 0
06.04.2007, 10:00
    #34442379
rank
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
Stimo rank Stimo???
extended procedures (в 2000 они есть) на порядок быстрее CLR-UDF. другое дело, что деваться некуда.а в С++ есть классы для работы с регулярными выражениями?
Не по адресу, но всё же http://www.tropicsoft.com/Components/RegularExpression/ . Первый результат в гугле.
К тому же, esp - не обязательно с++.по сравнению с решением данной задачи (да и других задач по работе со строками) с помощью CLR или T-SQL использование ESP уж больно хлопотно: библиотеки сторонних производителей, безопасность и надежность кода и т.п. А производительность ESP уж точно не быстрее на порядок.
...
Рейтинг: 0 / 0
06.04.2007, 11:00
    #34442636
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
вот так повеселее будет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @S VARCHAR( 8000 );
SET @S='mjvfge45564368uivf6808976208 976 017896tx 08716t';


declare @i int
select @S=''''+@S+'''', @i= 20 

while @i< 255  
  select @S=case when char(@i) like '[0-9'']' then @S else 'replace('+@S+','''+char(@i)+''','''')' end,
     @i=@i+ 1 

select @S='select '+@S
exec(@S)
в принципе строку с кучей replace можно сохранить и вызывать в запросе
...
Рейтинг: 0 / 0
06.04.2007, 11:36
    #34442806
rank
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
SergSuperвот так повеселее будет
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @S VARCHAR( 8000 );
SET @S='mjvfge45564368uivf6808976208 976 017896tx 08716t';


declare @i int
select @S=''''+@S+'''', @i= 20 

while @i< 255  
  select @S=case when char(@i) like '[0-9'']' then @S else 'replace('+@S+','''+char(@i)+''','''')' end,
     @i=@i+ 1 

select @S='select '+@S
exec(@S)
в принципе строку с кучей replace можно сохранить и вызывать в запросеприкольный метод, 5+!
...
Рейтинг: 0 / 0
06.04.2007, 12:51
    #34443172
Абориген
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
rankприкольный метод, 5+!но о-о-о-очень медленный :)
...
Рейтинг: 0 / 0
06.04.2007, 13:47
    #34443415
rank
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
Абориген rankприкольный метод, 5+!но о-о-о-очень медленный :)а с чего медленный то?
...
Рейтинг: 0 / 0
06.04.2007, 17:29
    #34444384
Абориген
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
rankа с чего медленный то?Идёт перебор по всем символам ASCII кроме цифр, а большинство из них может в строке отсутствовать, например +7(095)555-09-33; слишком много ненужных конкатенаций. Не работает при наличии в строке апострофа.
Проверьте сами эти методы, просто погоняйте в цикле.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
24.01.2012, 14:32
    #37628871
robzi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
спасибки, большое очень выручили
...
Рейтинг: 0 / 0
24.01.2012, 14:58
    #37628947
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
...
Рейтинг: 0 / 0
24.01.2012, 18:01
    #37629491
удалить все символы из строки кроме цифр
iap 9829428 Хм, любопытный вариантик... А не бага ли это?
...
Рейтинг: 0 / 0
24.01.2012, 18:50
    #37629606
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
любознательный гостьА не бага ли это?
С чего бы? обычный способ конкатенации выборки в одну строку.
...
Рейтинг: 0 / 0
24.01.2012, 20:15
    #37629730
удалить все символы из строки кроме цифр
Сон Веры Павловнылюбознательный гостьА не бага ли это?
С чего бы? обычный способ конкатенации выборки в одну строку.Хотя бы с того, что я не нашел описания этой своеобразной фичи в документации. Может плохо искал...
...
Рейтинг: 0 / 0
24.01.2012, 20:56
    #37629777
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
удалить все символы из строки кроме цифр
любознательный гостьМожет плохо искал...
Да:
http://msdn.microsoft.com/en-us/library/ms190922.aspx
If you provide an empty string (FOR XML PATH ('')), no wrapper element is generated
+
http://msdn.microsoft.com/en-us/library/bb510469.aspx
Any column without a name will be inlined. For example, computed columns or nested scalar queries that do not specify column alias will generate columns without any name. If the column is of xml type, the content of that data type instance is inserted. Otherwise, the column content is inserted as a text node.
...
Рейтинг: 0 / 0
25.01.2012, 09:35
    #37630147
удалить все символы из строки кроме цифр
Сон Веры Павловны, благодарствую.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / удалить все символы из строки кроме цифр / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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