我有一列字母数字ID,我们称它为[IDS]。
id只能是数字,但其中一些具有流浪字符。
例如:
[IDS]
- 012345A
- 23456789AF
- 789789
我只想将它们转换为数字-因此输出为:
[IDS]
012345
23456789
789789
我想编写一些代码,以在该列中搜索字母(A-Z)中的所有字母并将其删除,以便提取数值。
我知道我可以进行一次replace(replace(replace(.... etc),但是对于字母表中的所有26个字母来说,这都不理想。
我现在正尝试使用“声明@”解决它,但这些似乎是针对特定字符串设计的,我希望搜索并替换整列。
使用Microsoft SQL Server。
谢谢
答案 0 :(得分:5)
CREATE TABLE #Table11
([IDS] varchar(10))
;
INSERT INTO #Table11
([IDS])
VALUES
('012345A'),
('23456789AF'),
('789789')
;
SELECT SUBSTRING([IDS], PATINDEX('%[0-9]%', [IDS]), PATINDEX('%[0-9][^0-9]%', [IDS] + 't') - PATINDEX('%[0-9]%',
[IDS]) + 1) AS IDS
FROM #Table11
输出
IDS
012345
23456789
789789
答案 1 :(得分:0)
首先创建此 UDF
CREATE FUNCTION dbo.udf_GetNumeric
(@strAlphaNumeric VARCHAR(256))
RETURNS VARCHAR(256)
AS
BEGIN
DECLARE @intAlpha INT
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric)
BEGIN
WHILE @intAlpha > 0
BEGIN
SET @strAlphaNumeric = STUFF(@strAlphaNumeric, @intAlpha, 1, '' )
SET @intAlpha = PATINDEX('%[^0-9]%', @strAlphaNumeric )
END
END
RETURN ISNULL(@strAlphaNumeric,0)
END
GO
现在将 function
用作
SELECT dbo.udf_GetNumeric(column_name)
from table_name
我希望这可以解决您的问题。
答案 2 :(得分:0)
您可以创建一个函数:
CREATE FUNCTION getNumber(@string VARCHAR(1500))
RETURNS VARCHAR(1500)
AS
BEGIN
DECLARE @count int
DECLARE @intNumbers VARCHAR(1500)
SET @count = 0
SET @intNumbers = ''
WHILE @count <= LEN(@string)
BEGIN
IF SUBSTRING(@string, @count, 1)>='0' and SUBSTRING (@string, @count, 1) <='9'
BEGIN
SET @intNumbers = @intNumbers + SUBSTRING (@string, @count, 1)
END
SET @count = @count + 1
END
RETURN @intNumbers
END
GO
然后命名为:
SELECT dbo.getNumber('23456789AF') As "Number"
Number
23456789
答案 3 :(得分:0)
要把这个丑陋的野兽扔到这里...
SELECT REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE(REPLACE (
REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE(REPLACE (
REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE(
REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE
(IDS, 'A', ''), 'B', ''), 'C', ''), 'D', ''), 'E', ''), 'F', ''), 'G', '')
, 'H', ''), 'I', ''), 'J', ''), 'K', ''), 'L', ''), 'M', '')
, 'N', ''), 'O', ''), 'P', ''), 'Q', ''), 'R', ''), 'S', '')
, 'T', ''), 'U', ''), 'V', ''), 'W', ''), 'X', ''), 'y', '')
, 'Z', '')
FROM #Table11