标签: sql-server-2016

如何检查SQL Server表中是否存在列?

如果不存在,我需要添加一个特定的列.我有类似以下内容,但它总是返回false:

IF EXISTS(SELECT *
          FROM   INFORMATION_SCHEMA.COLUMNS
          WHERE  TABLE_NAME = 'myTableName'
                 AND COLUMN_NAME = 'myColumnName') 
Run Code Online (Sandbox Code Playgroud)

如何检查SQL Server数据库的表中是否存在列?

t-sql sql-server sql-server-2008 sql-server-2012 sql-server-2016

1792
推荐指数
24
解决办法
115万
查看次数

如何将表移动到T-SQL中的模式中

我想使用T-SQL将表移动到特定的Schema中?我正在使用SQL Server 2008.

t-sql sql-server schema sql-server-2008 sql-server-2016

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

SQL Server:过滤sp_who2的输出

在SQL Server下,是否有一种简单的方法来过滤sp_who2的输出?例如,我想只显示某个数据库的行.

sql-server sql-server-2016

186
推荐指数
6
解决办法
16万
查看次数

为什么SQL中的199.96 - 0 = 200?

我有一些客户收到奇怪的账单.我能够找出核心问题:

SELECT 199.96 - (0.0 * FLOOR(CAST(1.0 AS DECIMAL(19, 4)) * CAST(199.96 AS DECIMAL(19, 4)))) -- 200 what the?
SELECT 199.96 - (0.0 * FLOOR(1.0 * CAST(199.96 AS DECIMAL(19, 4)))) -- 199.96
SELECT 199.96 - (0.0 * FLOOR(CAST(1.0 AS DECIMAL(19, 4)) * 199.96)) -- 199.96

SELECT 199.96 - (CAST(0.0 AS DECIMAL(19, 4)) * FLOOR(CAST(1.0 AS DECIMAL(19, 4)) * CAST(199.96 AS DECIMAL(19, 4)))) -- 199.96
SELECT 199.96 - (CAST(0.0 AS DECIMAL(19, 4)) * FLOOR(1.0 * CAST(199.96 AS DECIMAL(19, 4))))                         -- 199.96 …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server precision sqldatatypes sql-server-2016

83
推荐指数
2
解决办法
5941
查看次数

SQL Server中是否有LastIndexOf?

我试图分析出从涉及获取一个字符串值最后一个 指标一个的字符串.目前,我正在做一个涉及反转字符串的可怕黑客攻击:

SELECT REVERSE(SUBSTRING(REVERSE(DB_NAME()), 1, 
    CHARINDEX('_', REVERSE(DB_NAME()), 1) - 1))
Run Code Online (Sandbox Code Playgroud)

对我来说,这段代码几乎是不可读的.我刚刚升级到SQL Server 2016,我希望有更好的方法.在那儿?

sql sql-server sql-server-2016

42
推荐指数
4
解决办法
6万
查看次数

OPENJSON在SQL Server中不起作用?

我想在SQL Server 2016中使用JSON函数,但是当我尝试执行OPENJSON函数时,我收到以下错误:

消息208,级别16,状态1,行1
无效的对象名称'openjson'.

为什么它不起作用?我有SQL Server 2016 RC版本.

sql-server json sql-server-2016

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

SQL Server OPENJSON读取嵌套的json

我想在SQL Server 2016中解析一些json.有一个Projects-> Structures-> Properties的层次结构.我想编写一个解析整个层次结构的查询,但我不想按索引号指定任何元素,即我不想做这样的事情:

openjson (@json, '$[0]')
Run Code Online (Sandbox Code Playgroud)

要么

openjson (@json, '$.structures[0]')
Run Code Online (Sandbox Code Playgroud)

我有这个想法,我可以读取顶级项目对象的值以及表示它下面的结构的json字符串,然后可以单独解析.问题是以下代码不起作用:

declare @json nvarchar(max)
set @json = '
[
   {
      "IdProject":"97A76363-095D-4FAB-940E-9ED2722DBC47",
      "Name":"Test Project",
      "structures":[
         {
            "IdStructure":"CB0466F9-662F-412B-956A-7D164B5D358F",
            "IdProject":"97A76363-095D-4FAB-940E-9ED2722DBC47",
            "Name":"Test Structure",
            "BaseStructure":"Base Structure",
            "DatabaseSchema":"dbo",
            "properties":[
               {
                  "IdProperty":"618DC40B-4D04-4BF8-B1E6-12E13DDE86F4",
                  "IdStructure":"CB0466F9-662F-412B-956A-7D164B5D358F",
                  "Name":"Test Property 2",
                  "DataType":1,
                  "Precision":0,
                  "Scale":0,
                  "IsNullable":false,
                  "ObjectName":"Test Object",
                  "DefaultType":1,
                  "DefaultValue":""
               },
               {
                  "IdProperty":"FFF433EC-0BB5-41CD-8A71-B5F09B97C5FC",
                  "IdStructure":"CB0466F9-662F-412B-956A-7D164B5D358F",
                  "Name":"Test Property 1",
                  "DataType":1,
                  "Precision":0,
                  "Scale":0,
                  "IsNullable":false,
                  "ObjectName":"Test Object",
                  "DefaultType":1,
                  "DefaultValue":""
               }
            ]
         }
      ]
   }
]';

select IdProject, Name, structures
from   openjson (@json)
with
(
    IdProject …
Run Code Online (Sandbox Code Playgroud)

parsing json hierarchy sql-server-2016 open-json

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

SQL to JSON - SQL 2016中的值数组对象数组

SQL 2016具有一项新功能,可将SQL Server上的数据转换为JSON.我很难将对象数组合成值数组,即

示例 -

CREATE TABLE #temp (item_id VARCHAR(256))

INSERT INTO #temp VALUES ('1234'),('5678'),('7890')

SELECT * FROM #temp

--convert to JSON

SELECT (SELECT item_id 
FROM #temp
FOR JSON PATH,root('ids')) 
Run Code Online (Sandbox Code Playgroud)

结果 -

{
    "ids": [{
        "item_id": "1234"
    },
    {
        "item_id": "5678"
    },
    {
        "item_id": "7890"
    }]
}
Run Code Online (Sandbox Code Playgroud)

但我希望结果如下 -

"ids": [
        "1234",
        "5678",
        "7890"
    ]
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

sql json sql-server-2016

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

NHibernate HQL Generator支持SQL Server 2016时态表

我试图在NHibernate 4.x中实现对SQL Server 2016时态表的基本支持.想法是改变SQL语句

SELECT * FROM Table t0
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM Table FOR SYSTEM_TIME AS OF '2018-01-16 00:00:00' t0
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到有关SQL Server 2016中时态表的更多信息

不幸的是,我没有找到任何方法FOR FOR SYSTEM_TIME AS OF '...'在表名和它的别名之间插入语句.我不确定自定义方言是否支持此功能.我现在唯一可行的解​​决方案是FOR SYSTEM_TIME在extra中附加语句WHERE,我的输出SQL看起来像这样

SELECT * FROM Table t0 WHERE FOR SYSTEM_TIME AS OF '2018-01-16 00:00:00'=1
Run Code Online (Sandbox Code Playgroud)

为此,我实现了生成器和方言,如下所示:

public static class AuditableExtensions
{
    public static bool AsOf(this IAuditable entity, DateTime date)
    {
        return true;
    }

    public static IQueryable<T> Query<T>(this ISession session, DateTime asOf) where T : …
Run Code Online (Sandbox Code Playgroud)

c# sql-server nhibernate sql-server-2016 temporal-tables

26
推荐指数
1
解决办法
599
查看次数

如何在视图中获取列级依赖项

我已经就此事做了一些研究,但还没有解决方案.我想得到的是视图中的列级依赖项.所以,假设我们有一个这样的表

create table TEST(
    first_name varchar(10),
    last_name varchar(10),
    street varchar(10),
    number int
)
Run Code Online (Sandbox Code Playgroud)

和这样的观点:

create view vTEST
as
    select
        first_name + ' ' + last_name as [name],
        street + ' ' + cast(number as varchar(max)) as [address]
    from dbo.TEST
Run Code Online (Sandbox Code Playgroud)

我想要的是得到这样的结果:

column_name depends_on_column_name depends_on_table_name
----------- --------------------- --------------------
name        first_name            dbo.TEST
name        last_name             dbo.TEST
address     street                dbo.TEST
address     number                dbo.TEST
Run Code Online (Sandbox Code Playgroud)

我已尝试过sys.dm_sql_referenced_entities功能,但referencing_minor_id视图总是为0.

select
    referencing_minor_id,
    referenced_schema_name + '.' + referenced_entity_name as depends_on_table_name,
    referenced_minor_name as depends_on_column_name
from sys.dm_sql_referenced_entities('dbo.vTEST', 'OBJECT')

referencing_minor_id depends_on_table_name …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-server-2016

22
推荐指数
2
解决办法
1170
查看次数