如何仅返回查询中的数字,其中列为nvarchar

时间:2016-02-17 19:59:58

标签: sql sql-server sql-server-2008

我有一个简单的查询返回记录,其中" column2" > 0

这是数据库中的数据

Column1          Column2
1                123456789
2                123456781
3                13-151-1513
4                alsdjf
5                 
6                000000000

她是查询

 select column1, replace(a.Payroll_id,'-','')
    from table1
    where isnumeric(column2) = 1

我想退回以下内容:

Column1          Column2
1                123456789
2                123456781
3                131511513

这意味着,当列为空(或为空)时,我不会选择任何记录,如果它不是整数,则不会返回一行,并且会退出“ - ”。 ',并且不会显示第6行,因为它全部为0。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

我认为你可以使用这样的东西:

createNewUser(name,password,age)

然后你可以为空,NULL,0等应用验证

答案 1 :(得分:1)

如果您使用的是SQL2012或更高版本,您还可以使用在解析时更具选择性的TRY_PARSE。如果无法转换记录,此函数将返回NULL。您可以像这样使用它:

CREATE TABLE #temp
    (
     ID INT IDENTITY ,
     VALUE VARCHAR(30)
    )
INSERT  INTO #temp
       ( VALUE )
VALUES  ( '1213213' ),
       ( '1213213' ),
       ( '121-32-13' ),
       ( 'ASDFASF2123' ),
       ( '0000000' )

SELECT  ParsedValue
FROM   #temp
       CROSS APPLY ( SELECT TRY_PARSE(
                          Value AS INT ) AS ParsedValue
                ) details
WHERE   ParsedValue IS NOT NULL
AND ParsedValue>0