T-SQL(Transact Structured Query Language)是Sybase ASE和Microsoft SQL Server支持的SQL功能的扩展。不要将此标记用于MySQL,PostgreSql,Oracle(Pl / SQL)相关查询。请注意,使用LINQ编写的sql代码也不是此标记的一部分。此标记专门用于使用Microsoft SQL Server进行高级SQL编程。
将高棉语与零长度字符串进行比较时,NULLIF/IIF 返回不需要的结果
我发现一个 T-SQL 语句无法将字符串设为 NULL(如果它是空字符串)。就像是: SELECT NULLIF(N'ធ្វើឱ្យ', '') -- NULL 根据谷歌翻译,这个词的意思是“制作”
我发现一个 T-SQL 语句无法将字符串设为 NULL(如果它是空字符串)。就像是: SELECT NULLIF(N'ធ្វើឱ្យ', '') -- NULL 根据谷歌翻译,这个词的意思是“制作”
我有以下语句,它返回一个数据库的当前标识值 ;与cte 作为 (选择 A.TABLE_CATALOG 作为目录 ,A.TABLE_SCHEMA 作为“架构” ...
我正在尝试以字符串形式获取多个邮政编码的输入,并将它们拆分以查看特定表中是否存在每个邮政编码的记录;我做了 String_Split 只是为了 ',' 作为分隔符,但是...
我偶然发现了以下问题,并且我有点困惑如何解决这个问题(以及如何实际向 ChatGPT 提出这个问题..:D)。 源系统向我提供每个月的年初至今数据。 分析师
我正在尝试以字符串形式获取多个邮政编码的输入,并将它们拆分以查看特定表中是否存在每个邮政编码的记录;我做了 String_Split 只是为了 ',' 作为分隔符,但是...
有没有一种方法可以在 T-SQL 中以编程方式比较两个表的定义。 不仅是列名和数据类型,还包括以下方法返回的所有定义: sp_help '表名'
我是新人,刚刚学习 Blazor。我正在使用实体框架核心库。当我设法从 SQL Server 表中提取数据时,我已经遇到了插入问题。 这不是一个普通的ins...
我有一个 SQL Server 查询,需要按列访问信息,这会生成一个很长的 case 语句来涵盖所有必要的列。 我想知道是否有更简洁的...
我正在尝试使用 SQL Server 存储过程而不是 GUI 创建 Umbraco 成员。 使用 SQL Server Profiler,我可以看到有一个可以使用的函数: exec sp_executesql N'INS...
我有一个字符串表,其中每个字符串代表一个地理位置,每个级别由“|”分隔。 条目并不总是具有相同的级别数和相同的条目...
希望有人可以帮助我进行 SQL 查询,我正在尝试合并两个 XML 列,我目前正在使用 SQL Azure 2019。 第一个 XML 希望有人可以帮助我进行 SQL 查询,我正在尝试合并两个 XML 列,我目前正在使用 SQL Azure 2019。 第一个 XML <HOME> <VALIDITYLIST> <VALIDITY STATE="1"> <VALIDITYTYPE>1</VALIDITYTYPE> <GROUPCODE>DEFAULT</GROUPCODE> <ENTRY/> <CARD>2</CAR> <GIFTAID/> <VARIABLERANGE>false</VARIABLERANGE> <DAYS>365</DAYS> <NOTOPERATING>false</NOTOPERATING> <VALIDITYLIST/> <YPERESTRICTIONLIST/> <METRALOCKERV2> <LOCKERITEMID/> </METRALOCKERV2> <REQUIREDVAREXPDATE/> </VALIDITY> </VALIDITYLIST> </HOME> 第二个 XML <HOME> <VALIDITYLIST> <VALIDITY STATE="1"> <VALIDITYTYPE>1</VALIDITYTYPE> <GROUPCODE>DEFAULT</GROUPCODE> <GIFTAID/> <DYNAMICP/> <VALIDITYLIST> <VALIDITY STATE="1"> <VALIDITYTYPE>2</VALIDITYTYPE> <EVENT>3</EVENT> <ENTRYTYPE>2</ENTRYTYPE> <NUMENTRY>1</NUMENTRY> </VALIDITY> </VALIDITYLIST> </VALIDITY> </VALIDITYLIST> </HOME> SQL 会以某种方式合并两个 xml,并仅返回存在值的节点。类似的东西。 <HOME> <VALIDITYLIST> <VALIDITY> <VALIDITYTYPE>1</VALIDITYTYPE> <GROUPCODE>DEFAULT</GROUPCODE> <CARD>2</CAR> <VARIABLERANGE>false</VARIABLERANGE> <DAYS>365</DAYS> <NOTOPERATING>false</NOTOPERATING> <VALIDITYLIST> <VALIDITY> <VALIDITYTYPE>2</VALIDITYTYPE> <EVENT>3</EVENT> <ENTRYTYPE>2</ENTRYTYPE> <NUMENTRY>1</NUMENTRY> </VALIDITY> </VALIDITYLIST> </VALIDITY> </VALIDITYLIST> </HOME> 感谢大家分享您的想法[下面编辑的部分] 我仍然想在 SQL 中处理。由于节点是固定的,我正在考虑通过读取单独的 XML 创建两个表,然后根据值构建新的 XML,现在我陷入了第一部分,读取 XML。 这就是我想到的,我应该期望在读取第二个 XML 但返回 NULL 时看到 1 和 2 的值,你能看到我在这里做错了什么吗? select @XML2.value('(/HOME/VALIDITYTYPE/node())[1]', 'nvarchar(max)') as VALIDITYTYPE , @XML2.value('(/HOME/VALIDITYLIST/VALIDITYLIST/VALIDITYTYPE/node())[1]', 'nvarchar(max)') as VALIDITYTYPE 是的,这在纯 SQL 中是可能的,使用 XQuery 并完全连接两个 XML,然后使用 FOR XML 重建它 SELECT *, NewXml = ( SELECT VALIDITYLIST = ( SELECT ISNULL(x1.query('.'), x2.query('.')) FROM t.Xml1.nodes('HOME/VALIDITYLIST/VALIDITY/*[(./*) or (text())]') x1(x1) FULL JOIN t.Xml2.nodes('HOME/VALIDITYLIST/VALIDITY/*[(./*) or (text())]') x2(x2) ON x2.x2.value('local-name(.)','nvarchar(30)') = x1.x1.value('local-name(.)','nvarchar(30)') FOR XML PATH(''), ROOT('VALIDITY'), TYPE ) FOR XML PATH(''), ROOT('HOME'), TYPE ) FROM YourTable t; 谓词 *[(./*) or (text())] 查找任何名称的所有节点,这些节点要么具有子节点,要么具有文本元素。 我们通过 local-name(.) 连接当前节点的名称,如果可用,则采用第一列的结果,否则采用第二列的结果。如果列未命名,FOR XML不会添加节点名称。 这一切都假设您始终只有一个 HOME/VALIDITYLIST/VALIDITY 节点,否则会更复杂。 db<>小提琴
;与 CTEima(PersonId,IsEmployeeActive) 作为 (选择计数(*) 来自 custom.viwSSAppsEmpMasterExtended vem 其中 vem.SupervisorPersonId = @p_PersonId 联合所有 选择 CTEima.IsEmployeeActive ...
有没有办法跟踪SQL Server中GO命令的执行计数。 我需要从一个非常大的表日志表中以非常小的批量进行删除,该表日志表由于
如何从 DATETIME 列中检索数据并通过存储过程返回它?
我正在 SQL Server 中开发存储过程。我正在从数据类型 DATETIME 的列中检索数据,并且我正在通过存储过程使用 SELECT 指令返回该信息...
我有一个要求,我需要将收款人姓氏与注册姓名和返回付款姓名相匹配, 有时我们会得到带有附加字符的收款人姓名... 例如,付款名称是“JOHNC” 和
假设: 我的桌子 -- 数量 1 2 3 4 5 MyTable 只有一列 Amount,有 5 行。它们不一定按升序排列。 如何创建一个函数,它接受 @SUM INT,然后返回...
刚刚阅读此网站https://www.toptal.com/sql/interview-questions 他们展示了使用 union all 删除重复项的技巧 选择 * 来自我的表 其中 a = X 联合所有 选择 * 来自我的...
当我像下面这样做时,它不会给出错误 声明 @dd datetime = GETDATE() 选择@dd 当我手动给出日期时出现错误 声明 @dd datetime = '2023-08-25 13:03:28.573' 选择...
可以在不重复的情况下编写使用相同过滤表进行逆透视和连接的查询吗?
考虑以下查询: 创建函数 unpivoter(@TableID int) 返回表 作为 返回 ( 选择a、b 从 ( 选择 foo1、foo2、foo3、foo4 从表1 哪里