我有一个PRODUCTNUMBER
类型的列VARCHAR
,可以包含这样的数据:
SEC123456
SEC-123456
12-35-46
123456
是否可以运行SQL Server查询,我只发送'123456'作为我的搜索数据,并且匹配PRODUCTNUMBER
包含此数据的所有行(即使{{1}数据包含PRODUCTNUMBER
)等字符?
答案 0 :(得分:1)
首先创建提取数值的函数
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
然后
select * from TableName where dbo.udf_GetNumeric(PRODUCTNUMBER) like '%123456%'
试试这个
答案 1 :(得分:0)
对于连续字符的情况:
select * from t where productnumber like '%123456%'
会奏效。如果它只是' - '在您可以使用的数据中替换(productnumber,' - ','')。但如果它可能是许多其他非数字字符,你需要类似的东西:
SQL to return field with non-numeric characters removed in MySQL