sql-server – 为什么我不能使用CASE语句来查看列是否存在而不是SELECT?
发布时间:2020-05-24 18:44:32 所属栏目:MsSql 来源:互联网
导读:为什么这样的事情不起作用? SELECTCASE WHEN NULLIF(COL_LENGTH(Customers, Somecol), ) IS NULL THEN NULLELSE SomecolEND AS MyTestFROM Customers; 我只是检查列是否存在,但是,SQL Server抱怨Somecol不存在.在一个声明中是否有替代方案? followin
|
为什么这样的事情不起作用? SELECT
CASE
WHEN NULLIF(COL_LENGTH('Customers','Somecol'),'') IS NULL THEN NULL
ELSE Somecol
END AS MyTest
FROM Customers;
我只是检查列是否存在,但是,SQL Server抱怨Somecol不存在.在一个声明中是否有替代方案? 解决方法following query使用与0700年0700相同的想法:SELECT x.*
FROM (SELECT NULL AS SomeCol) AS dummy
CROSS APPLY
(
SELECT
ID,SomeCol AS MyTest
FROM dbo.Customers
) AS x;
它的工作原理如下: >如果dbo.Customers有一个名为SomeCol的列,那么SomeCol AS MyTest中的SomeCol将解析为dbo.Customers.SomeCol; 您可以通过这种方式指定多个“备用”列.诀窍是不要对这些列使用表别名(在大多数情况下这是一种不受欢迎的做法,但在这种情况下省略表别名可以帮助您解决问题). 如果表在连接中使用而另一个表有自己的SomeCol,则可能需要在连接中使用它之前将上述查询用作派生表,以使该技巧保持正常工作,如下所示: SELECT ...
FROM
(
SELECT x.*
FROM (SELECT NULL AS SomeCol) AS dummy
CROSS APPLY (
SELECT
ID,SomeCol AS MyTest
FROM dbo.Customers
) AS x
) AS cust
INNER JOIN ...
; (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 如何获取SQL查询返回的表的大小(以字节为单位
- SQL Server 获取当前日期的最大时间值
- 如何安装SQL Server 2008 Management Studio Express
- 如何从SQL中的不同列中查找第一,第二和第三大值
- sql-server-2008 – 强制ASP.Net使用TCP / IP连接到SQL Ser
- sql-server – Char(9)不在Sql server 2005中打印选项卡
- 为什么要使用区分大小写的数据库?
- SQL Server SQL CONVERT转化函数使用方法小结
- sql-server – 如何将SQL Server 2005更改为区分大小写?
- 设计一个多对多关系的组合的SQL模式(产品的变体)
