如果不存在,我需要添加一个特定的列.我有类似以下内容,但它总是返回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
我想使用T-SQL将表移动到特定的Schema中?我正在使用SQL Server 2008.
在SQL Server下,是否有一种简单的方法来过滤sp_who2的输出?例如,我想只显示某个数据库的行.
我有一些客户收到奇怪的账单.我能够找出核心问题:
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) 我试图分析出从涉及获取一个字符串值最后一个 指标一个的字符串.目前,我正在做一个涉及反转字符串的可怕黑客攻击:
SELECT REVERSE(SUBSTRING(REVERSE(DB_NAME()), 1,
CHARINDEX('_', REVERSE(DB_NAME()), 1) - 1))
Run Code Online (Sandbox Code Playgroud)
对我来说,这段代码几乎是不可读的.我刚刚升级到SQL Server 2016,我希望有更好的方法.在那儿?
我想在SQL Server 2016中使用JSON函数,但是当我尝试执行OPENJSON函数时,我收到以下错误:
消息208,级别16,状态1,行1
无效的对象名称'openjson'.
为什么它不起作用?我有SQL Server 2016 RC版本.
我想在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) 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)
有人可以帮帮我吗?
我试图在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) 我已经就此事做了一些研究,但还没有解决方案.我想得到的是视图中的列级依赖项.所以,假设我们有一个这样的表
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-server-2016 ×10
sql-server ×8
t-sql ×4
json ×3
sql ×3
c# ×1
hierarchy ×1
nhibernate ×1
open-json ×1
parsing ×1
precision ×1
schema ×1
sqldatatypes ×1