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
Выход: