📜  仅从字符串中获取数字的 SQL 查询

📅  最后修改于: 2022-05-13 01:54:20.480000             🧑  作者: Mango

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

输出: