powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / удалить все символы из строки кроме цифр
25 сообщений из 32, страница 1 из 2
удалить все символы из строки кроме цифр
    #34440984
rank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как средствами T-SQL удалить из строки все символы кроме цифр?
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #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
удалить все символы из строки кроме цифр
    #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
удалить все символы из строки кроме цифр
    #34441165
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
удалить все символы из строки кроме цифр
    #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
удалить все символы из строки кроме цифр
    #34441313
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rankвариант с master..spt_values может не подойти, если строка слишком длинная
всем спасибоНа самом деле этот вариант самый быстрый. А чтобы он работал всегда, создайте специальную таблицу с целыми числами от 0 до, например, 1000000, и используйте её вместо master..spt_values.
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #34441367
rank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iap rankвариант с master..spt_values может не подойти, если строка слишком длинная
всем спасибоНа самом деле этот вариант самый быстрый. А чтобы он работал всегда, создайте специальную таблицу с целыми числами от 0 до, например, 1000000, и используйте её вместо master..spt_values.С таблицей на 1млн.записей - это перебор: содавать динамически - долго, держать в базе постоянно - накладно
А самый быстрый вариант - CLR-UDF, если бы не SQL2K.
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #34441393
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rank iap rankвариант с master..spt_values может не подойти, если строка слишком длинная
всем спасибоНа самом деле этот вариант самый быстрый. А чтобы он работал всегда, создайте специальную таблицу с целыми числами от 0 до, например, 1000000, и используйте её вместо master..spt_values.С таблицей на 1млн.записей - это переборНикакого перебора - такая таблица есть, наверно, у большинства посетителей этого форума. :-))
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #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
удалить все символы из строки кроме цифр
    #34441473
Stimo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rank iap rankвариант с master..spt_values может не подойти, если строка слишком длинная
всем спасибоНа самом деле этот вариант самый быстрый. А чтобы он работал всегда, создайте специальную таблицу с целыми числами от 0 до, например, 1000000, и используйте её вместо master..spt_values.С таблицей на 1млн.записей - это перебор: содавать динамически - долго, держать в базе постоянно - накладно
А самый быстрый вариант - CLR-UDF, если бы не SQL2K.
???
extended procedures (в 2000 они есть) на порядок быстрее CLR-UDF. другое дело, что деваться некуда.
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #34441508
rank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stimo???
extended procedures (в 2000 они есть) на порядок быстрее CLR-UDF. другое дело, что деваться некуда.а в С++ есть классы для работы с регулярными выражениями?
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #34442182
Stimo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rank Stimo???
extended procedures (в 2000 они есть) на порядок быстрее CLR-UDF. другое дело, что деваться некуда.а в С++ есть классы для работы с регулярными выражениями?
Не по адресу, но всё же http://www.tropicsoft.com/Components/RegularExpression/ . Первый результат в гугле.
К тому же, esp - не обязательно с++.
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #34442379
rank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stimo rank Stimo???
extended procedures (в 2000 они есть) на порядок быстрее CLR-UDF. другое дело, что деваться некуда.а в С++ есть классы для работы с регулярными выражениями?
Не по адресу, но всё же http://www.tropicsoft.com/Components/RegularExpression/ . Первый результат в гугле.
К тому же, esp - не обязательно с++.по сравнению с решением данной задачи (да и других задач по работе со строками) с помощью CLR или T-SQL использование ESP уж больно хлопотно: библиотеки сторонних производителей, безопасность и надежность кода и т.п. А производительность ESP уж точно не быстрее на порядок.
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #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
удалить все символы из строки кроме цифр
    #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
удалить все символы из строки кроме цифр
    #34443172
Абориген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rankприкольный метод, 5+!но о-о-о-очень медленный :)
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #34443415
rank
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абориген rankприкольный метод, 5+!но о-о-о-очень медленный :)а с чего медленный то?
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #34444384
Абориген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rankа с чего медленный то?Идёт перебор по всем символам ASCII кроме цифр, а большинство из них может в строке отсутствовать, например +7(095)555-09-33; слишком много ненужных конкатенаций. Не работает при наличии в строке апострофа.
Проверьте сами эти методы, просто погоняйте в цикле.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
удалить все символы из строки кроме цифр
    #37628871
robzi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибки, большое очень выручили
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #37628947
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #37629491
iap 9829428 Хм, любопытный вариантик... А не бага ли это?
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #37629606
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
любознательный гостьА не бага ли это?
С чего бы? обычный способ конкатенации выборки в одну строку.
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #37629730
Сон Веры Павловнылюбознательный гостьА не бага ли это?
С чего бы? обычный способ конкатенации выборки в одну строку.Хотя бы с того, что я не нашел описания этой своеобразной фичи в документации. Может плохо искал...
...
Рейтинг: 0 / 0
удалить все символы из строки кроме цифр
    #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
удалить все символы из строки кроме цифр
    #37630147
Сон Веры Павловны, благодарствую.
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / удалить все символы из строки кроме цифр
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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