SQL-запрос для получения только чисел из строки
Как мы знаем, в базу данных SQL мы можем вставлять данные любого типа. Иногда на производственном сервере данные повреждаются из-за объединения двух или более строк и их сохранения в столбце. В этом случае мы можем извлечь числовую часть из этой строки и сохранить ее снова. Итак, в этой статье мы узнаем, как извлекать числовые части строки в SQL. Мы будем использовать Microsoft SQL в качестве нашего сервера.
Итак, начнем с создания базы данных.
Шаг 1: Создайте БД
Запрос:
CREATE DATABASE GFG
Шаг 2: Используйте эту БД
Запрос:
USE GFG
Шаг 3: Создайте таблицу
Создайте таблицу (GetNum) для хранения данных
Запрос:
CREATE TABLE GetNum( StudentName varchar (255) )
Шаг 4: Вставьте некоторые данные в базу данных
Запрос:
INSERT INTO GetNum (StudentName) VALUES ("Devesh123")
INSERT INTO GetNum (StudentName) VALUES ("Geeks2")
INSERT INTO GetNum (StudentName) VALUES ("For5")
INSERT INTO GetNum (StudentName) VALUES ("Aman98")Выход:

Шаг 4: SQL-запрос для извлечения чисел
Мы напишем функцию SQL, чтобы не запускать один и тот же запрос снова и снова для извлечения чисел, мы можем использовать эту функцию несколько раз, и она будет храниться в базе данных.
Запрос:
CREATE FUNCTION dbo.getNumericValue
(
@inputString VARCHAR(256)
)
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @integerPart INT
SET @integerPart = PATINDEX("%[^0-9]%", @inputString)
BEGIN
WHILE @integerPart > 0
BEGIN
SET @inputString = STUFF(@inputString, @integerPart, 1, "" )
SET @integerPart = PATINDEX("%[^0-9]%", @inputString )
END
END
RETURN ISNULL(@inputString,0)
END
GOВы можете обратиться за более подробной информацией о PATINDEX().
Шаг 5: Теперь запустите созданную функцию, чтобы получить желаемый результат.
Запрос:
SELECT dbo.getNumericValue(StudentName) from GetNum
Выход:
