Чтобы извлечь числа из строки в SQL, вы можете использовать несколько методов. Вот несколько часто используемых подходов:
-
Использование пользовательской функции (UDF):
Вы можете создать пользовательскую функцию, которая перебирает каждый символ строки и извлекает числа. Вот пример использования SQL Server:CREATE FUNCTION dbo.ExtractNumbers (@inputString VARCHAR(1000)) RETURNS VARCHAR(1000) AS BEGIN DECLARE @outputString VARCHAR(1000) = '' DECLARE @index INT = 1 DECLARE @char CHAR(1) WHILE @index <= LEN(@inputString) BEGIN SET @char = SUBSTRING(@inputString, @index, 1) IF @char LIKE '[0-9]' SET @outputString = @outputString + @char SET @index = @index + 1 END RETURN @outputString ENDЗатем вы можете использовать UDF в своих SQL-запросах следующим образом:
SELECT dbo.ExtractNumbers('abc123def456') AS ExtractedNumbersЭто вернет извлеченные числа: «123456».
-
Использование комбинации функций манипулирования строками.
Другой способ извлечения чисел — использование встроенных функций манипулирования строками. Вот пример использования SQL Server:DECLARE @inputString VARCHAR(1000) = 'abc123def456' DECLARE @outputString VARCHAR(1000) = '' WHILE PATINDEX('%[^0-9]%', @inputString) > 0 BEGIN SET @outputString = @outputString + SUBSTRING(@inputString, PATINDEX('%[^0-9]%', @inputString), 1) SET @inputString = STUFF(@inputString, PATINDEX('%[^0-9]%', @inputString), 1, '') END SELECT @outputString AS ExtractedNumbersЭто также вернет извлеченные числа: «123456».
-
Использование регулярных выражений.
Если ваша система баз данных поддерживает регулярные выражения, вы можете использовать их для извлечения чисел из строки. Точный синтаксис может различаться в зависимости от используемой вами системы базы данных. Вот пример использования PostgreSQL:SELECT regexp_replace('abc123def456', '[^0-9]', '', 'g') AS ExtractedNumbersЭто вернет извлеченные числа: «123456».