相关疑难解决方法(0)

T-sql - 确定值是否为整数

我想确定一个值是否为整数(如TryParse在.NET中).不幸的是ISNUMERIC,我不适合我,因为我只想解析整数而不是每种数字.有ISINT什么东西吗?

这里有一些代码可以清楚地表达出来.如果MY_FIELD不是int,则此代码将失败:

SELECT @MY_VAR = CAST(MY_FIELD AS INT)
FROM MY_TABLE
WHERE MY_OTHER_FIELD = 'MY_FILTER'
Run Code Online (Sandbox Code Playgroud)

谢谢

t-sql sql-server integer casting isnumeric

40
推荐指数
5
解决办法
14万
查看次数

Try_Convert for SQL Server 2008 R2

我正在使用SQL Server 2008 R2并且有一个VARCHAR我想要转换为DECIMAL(28,10)使用的列CONVERT.但是其中许多行格式错误,因此无法将它们解析为数字.在这种情况下,我只想通过将结果设置为0或NULL来跳过这些.

我知道SQL Server 2012(TRY_CONVERT())中有一个新的语句会很方便.

这可能是在2008年还是我必须等到我们更新到下一个版本的SQL 2012?

编辑

不幸的ISNUMERIC()是,在这种情况下不可靠.我试过了

ISNUMERIC(myCol) = 1
Run Code Online (Sandbox Code Playgroud)

对于CONVERT无法转换为的行,返回true DECIMAL.

sql sql-server sql-server-2008 sql-server-2012

31
推荐指数
5
解决办法
3万
查看次数

sql server - 检查是否可以进行强制转换

我有以下代码将nvarchar转换为整数:

     cast(@value as int)
Run Code Online (Sandbox Code Playgroud)

但是我无法控制参数@value,因此代码可能会失败.无论如何,在进行演员表演之前是否可以检查演员表是否可行?

sql t-sql sql-server sql-server-2008

23
推荐指数
3
解决办法
4万
查看次数

SQLServer CASE表达式 - 短路评估?

我正在尝试优化执行以下操作的查询:

SELECT
   ...
   CASE WHEN (condition) THEN (expensive function call #1)
   ELSE (expensive function call #2) 
   END
...
Run Code Online (Sandbox Code Playgroud)

查询计划显示,即使在100%的行满足WHEN子句的情况下,大部分时间都花在调用ELSE分支中的结果上.

我能理解这一点的唯一方法是假设SQLServer正在评估两个结果,然后只根据WHEN条件的评估选择一个结果,但我找不到任何关于CASE结果的确定性引用语句在条件之前进行评估.有人可以澄清或指点我参考吗?

sql sql-server optimization performance

6
推荐指数
2
解决办法
2877
查看次数

SQL Server 2008 中的 try_parse

在 SQL Server 2008 中获得相同输出的最简单方法是什么?

SQLServer 2012:

select
    try_parse(Isnull('123.66',0) as float) as a ,
    try_parse(Isnull('.',0) as float) as b 
Run Code Online (Sandbox Code Playgroud)

结果

a       b
------------
123.66  NULL
Run Code Online (Sandbox Code Playgroud)

SQLServer 2008:?

sql-server

6
推荐指数
2
解决办法
9141
查看次数

TSQL 两个数字相加

我知道这对某些人来说可能很简单,但我很难做到这一点。我只是想将两列添加在一起。我的第一个数字是“FirstShift”= 90,“SecondShift”= 100。为什么我没有得到 190?我应该看到我的 23 条记录都具有不同的值,190 是我的最高记录。

SELECT
    [FirstShift] + [SecondShift] AS [Total Counted]
FROM
Run Code Online (Sandbox Code Playgroud)

谢谢

sql t-sql sql-server

2
推荐指数
1
解决办法
2万
查看次数

T-SQL - 如何处理 SELECT If Error Logic

我在下面有一个简单的选择语句:

SELECT Code =   Cast([Code] as int)
FROM dbo.table 
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

转换 nvarchar 值“?”时转换失败 到数据类型int。

我想编写 IFERROR 或 CASE 语句,用 -9999 之类的数字替换错误

t-sql sql-server

0
推荐指数
1
解决办法
7426
查看次数