标签: sql-server-2016

如何确定给定的表是否是内存优化的?

早上好,

我的第一个问题是如何确定在 MS SQL Server 中创建的表是否是内存优化的。我有一些表,但我不记得我创建的其中一些表是否经过内存优化。

非常感谢您的回答。

sql-server sql-server-2016 sql-server-2019

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

从 XML 列中选择所有 XML 节点

我有一个带有 XML 列的表。每个条目的 XML 结构都是完全扁平的,甚至没有父标签 - 这是一个条目的示例:

<tag1>1.22</tag1>
<tag3>5</tag3>
<tag12>-1.22</tag>
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经能够做这样的事情:

SELECT CAST(xml_column AS NVARCHAR(MAX)) as XML_text
Run Code Online (Sandbox Code Playgroud)

并在我这边解析 XML。或者我显然可以编写xpath查询来将标签选择到列中,这就是我想要的,除了大约有 1000 个可能的标签名称,而且我不想将它们全部写出来(并且可能会错过一个)。

简而言之,我该如何处理:

| ID | XML type column                |
| 1  | <tag1>1</tag1><tag2>2</tag2>   |
| 2  | <tag2>8</tag2><tag34>1</tag34> |
Run Code Online (Sandbox Code Playgroud)

对此:

| ID | tag1 | tag2 | tag34 |
| 1  | 1    | 2    | NULL  |
| 2  | NULL | 8    | 1     |
Run Code Online (Sandbox Code Playgroud)

对于我可以在数据集中找到的任何标签,而无需提前知道它们?我也愿意解决这个问题:

| ID | tag   | value | 
| …
Run Code Online (Sandbox Code Playgroud)

xml t-sql sql-server xquery sql-server-2016

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

我如何删除毫秒

我使用tsql只打印时间.我最终获得毫秒部分.例如

CONVERT(TIME, entrytime,20) as entrytime
Run Code Online (Sandbox Code Playgroud)

这给了我

16:00:07.0000000
Run Code Online (Sandbox Code Playgroud)

我怎么能摆脱.0000000

t-sql sql-server sql-server-2016

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

如何在SQL Server中将日期从varchar转换为datetime2?

如何将这些日期值从varchar转换为datetime2?

WITH dates AS (
SELECT '6.7.2012' AS dtm
UNION 
SELECT '13.2.2012' AS dtm
UNION
SELECT '3.12.2012' AS dtm
UNION 
SELECT '20.11.2012' AS dtm
)
SELECT CAST(dtm as datetime2) FROM dates
;
Run Code Online (Sandbox Code Playgroud)

这会导致错误:

消息241,级别16,状态1,行6
转换从字符串转换日期和/或时间时失败.

sql sql-server date sql-server-2016

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

如何从空间中修剪字符串

我有一个领域

BestStreet 123/56
Run Code Online (Sandbox Code Playgroud)

而且我想得到

BestStreet
Run Code Online (Sandbox Code Playgroud)

我试过了:

LEFT(sd.UliceCP, CHARINDEX(' ', sd.UliceCP)-1)
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2016

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

SSRS错误-“报告项目表达式只能引用当前数据集范围内的字段,或者如果是聚合内的字段,

我是SSRS的新手,我不确定它是否会做我想做的事。

我在SSRS中遇到以下错误:

“文本框'Textbox17'的值表达式引用字段'DayCnt'。报表项表达式只能引用具有当前数据集范围的字段,或者,如果在聚合内,则是指定数据集范围的字段。字段名称中的字母必须使用正确的大小写。”

我有一个3行3列的列表。我需要在行和列中使用多个数据集。我希望报告中的所有内容都按每个数据集的学校ID分组。

在某些情况下,我将在每个单元格中使用多个数据集,并且使用文本框,然后将数据集字段拖到其中。我不确定是否是分组问题。我不确定如何一次对整个列表进行分组,或者它是基于行的,也不知道如何将分组与具有多列的列表一起使用。

我如何才能根据学校ID获得列表中的所有内容?

谢谢您的帮助。

在此处输入图片说明

sql-server reporting-services sql-server-2016

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

如何在SQL中找到最近的颜色?

我有一个带有递增颜色编号的表,以及相应的HTML-hex值.(没有#的十六进制值)

CREATE TABLE dbo.T_SYS_ColorToHex
(
     COL_Number int NOT NULL 
    ,COL_Hex varchar(6) NULL 
    ,CONSTRAINT PK_T_SYS_ColorToHex PRIMARY KEY (COL_Number)
);
Run Code Online (Sandbox Code Playgroud)

现在给我一种颜色,

例如'007FFF',需要在表格中找到最近的颜色(T_SYS_ColorToHex).

我该怎么做呢 ?

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

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

如何在SQL中使用返回的数据更新单列?

给定下面SELECT语句的输出,如何将所有记录的"CameraLocationID"字段更新为"LocationID"字段中的值?

当前状态:

ItemID  CameraID    CameraLocationID    LocationID
2       23038       NULL                335
3       23039       NULL                67
4       23040       NULL                34
5       23041       NULL                234
Run Code Online (Sandbox Code Playgroud)

期望的输出:

ItemID  CameraID    CameraLocationID    LocationID
2       23038       335                 335
3       23039       67                  67
4       23040       34                  34
5       23041       234                 234
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  • 选择,然后尝试使用SSMS复制/粘贴单个列
  • INSERT INTO(几乎知道这不会起作用,因为我本身并不是真正"插入"
  • 将LocationID值复制并粘贴到Excel中,然后尝试使用SSMS c/p回到SQL

有一种SQL方法可以很快地完成这项工作吗?

编辑:对于未来的旅行者,CameraLocationID和LocationID在不同的表中.在应用UPDATE之前,SELECT将它们组合成一个输出.

sql sql-server sql-server-2016

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

Where子句中的下划线会产生意外结果,为什么?

我想查找所有以开头的表TB_,因此我编写了以下脚本:

select *
from INFORMATION_SCHEMA.TABLES
where TABLE_NAME like 'TB_%'
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,我得到了以下结果:

TB103_xxx
TB037_bbb
TB104_ccc
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么?

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

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

计算前7行SQL的平均值

考虑从存储过程返回的以下结果集:

在此处输入图片说明

IHD列的目标是对前6行(天)进行计算,以确定存储过程中的IHD值。

在这种情况下,只有从第7行开始才有IHD值,因为计算需要考虑前6天的期末余额,包括当日(第7天)并计算平均值。基本上,它需要使用行1到7作为行的7 IHD值。然后,要计算第8行的IHD值,需要使用第2到8行。

我看过SQL LAG函数,但这只允许我跳到上一行,而且我不确定我是否能够LAG在需要CTE平均多个上一行的自引用中成功使用该函数。

我应该如何处理这种情况?

sql sql-server sql-server-2016

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