我正在使用SQL Server 2012
和Entity framework 6
。
问题是:我有nvarchar
个数字字符串,但也有“ - ”字符和我正在寻找的数字中的符号。
假设我已将值123456-1234A
存储在表格中。有没有办法在没有“ - ”和“A”的情况下选择这个值?
我想选择“1234561234”并返回值123456-1234A
。是否有这样的过滤功能,或者是清理数据库的唯一方法,并确保以相同的方式插入数据,以及想要获取的数据?
由于
答案 0 :(得分:0)
根据评论:
我需要的是从某些列中选择*,其中number = 1234561234“应该返回一个 数字为“123456-1234A”的行
首先,您可以创建一个描述here:
的函数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 somecolumn where dbo.udf_GetNumeric(number) = 1234561234