在结果之前过滤SQL Server表数据查询

时间:2015-08-26 14:29:14

标签: sql-server entity-framework-6

我正在使用SQL Server 2012Entity framework 6

问题是:我有nvarchar个数字字符串,但也有“ - ”字符和我正在寻找的数字中的符号。

假设我已将值123456-1234A存储在表格中。有没有办法在没有“ - ”和“A”的情况下选择这个值?

我想选择“1234561234”并返回值123456-1234A。是否有这样的过滤功能,或者是清理数据库的唯一方法,并确保以相同的方式插入数据,以及想要获取的数据?

由于

1 个答案:

答案 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