powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вытащить число из строки
11 сообщений из 11, страница 1 из 1
Вытащить число из строки
    #40090130
newbie876454
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть строка вида: 'bk045sp'
Нужно получить число 45 в виде int.
Как это сделать попроще?

Приходит на ум replace всех букв (но я вряд ли перечислю в запросе), а оставшееся - конвертить в цифру с помощью cast.
Еще есть вариант помощью patindex, но довольно мудрено получится.
Может есть лучше вариант?
...
Рейтинг: 0 / 0
Вытащить число из строки
    #40090132
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newbie876454,

гугл знает такую задачу
https://stackoverflow.com/questions/16667251/query-to-get-only-numbers-from-a-string
...
Рейтинг: 0 / 0
Вытащить число из строки
    #40090141
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newbie876454

Приходит на ум replace всех букв (но я вряд ли перечислю в запросе), а оставшееся - конвертить в цифру с помощью cast.

Может есть лучше вариант?


replace НЕ цифр. Цифр 10 шт всего.
...
Рейтинг: 0 / 0
Вытащить число из строки
    #40090149
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
declare @s varchar(100) =  'sk045sp';

select
 cast(coalesce(b.s, a.s, @s) as int)
from
 (select stuff(@s, 1, nullif(patindex('%[0123456789]%', @s), 0) - 1, '')) a(s) cross apply
 (select stuff(a.s, nullif(patindex('%[^0123456789]%', a.s), 0), 100, '')) b(s);
...
Рейтинг: 0 / 0
Вытащить число из строки
    #40090151
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выборка чисел из строки
Всё здесь уже было 100 раз!
...
Рейтинг: 0 / 0
Вытащить число из строки
    #40090161
newbie876454
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,

спасибо, подошло
...
Рейтинг: 0 / 0
Вытащить число из строки
    #40091290
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
newbie876454,


Если нужны все цифры (убрать все кроме них):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE @s NVARCHAR(100) = '+7(777)777-77-77';

WITH cte
     AS (SELECT TOP (LEN(@s)) SUBSTRING(@s, ROW_NUMBER() OVER(ORDER BY 1 / 0), 1) AS chr
           FROM sys.columns(NOLOCK)) -- любая ненагруженная таблица имеющая несколько десятков записей
     SELECT TRY_CAST(STRING_AGG(chr, '') AS BIGINT) AS x
       FROM cte
      WHERE chr LIKE '[0-9]';
...
Рейтинг: 0 / 0
Вытащить число из строки
    #40127411
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SQL,
бомба

но так план получше будет вроде =)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
DECLARE @s NVARCHAR(100) = '+1(277)77qeq7-77-77';

SELECT 
	chr '*' 
FROM 
(
	SELECT 
		n, 
		SUBSTRING(@s, n, 1) AS chr 
	FROM 
		n1024
) t 
WHERE 
	TRY_CAST(chr AS BIT) IS NOT NULL 
ORDER BY 
	n
FOR XML PATH('')



где n1024, думаю, понятно что
...
Рейтинг: 0 / 0
Вытащить число из строки
    #40127419
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TRY_CAST(' ' AS BIT), правда 0 дает
...
Рейтинг: 0 / 0
Вытащить число из строки
    #40127494
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newbie876454,

Код: sql
1.
select convert([int], replace(translate( 'bk045sp' , 'abcdefghijklmnopqrstuvwxyz', space(26)),' ',''))
...
Рейтинг: 0 / 0
Вытащить число из строки
    #40127503
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
newbie876454,

Код: sql
1.
select convert([int], replace(translate( 'bk045sp' , 'abcdefghijklmnopqrstuvwxyz', space(26)),' ',''))



Много букв перечислять придется, если там попадутся абвгд, или типа üö т .д.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вытащить число из строки
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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