仅从字符串中获取数字的 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
输出: