我刚刚回答了这个问题:SQL中的Concate主键
我遇到了一个奇怪的行为:
SELECT 5 + '-' + 8
Run Code Online (Sandbox Code Playgroud)
返回13
SELECT CAST('-' AS INT)
Run Code Online (Sandbox Code Playgroud)
返回0,解释了以上内容......
但是:为什么一个连字符会被隐含地归零?
顺便说一下:单个+或(多个)空白字符串也一样......
这与CAST连字符( - )与Decimal相关,但指出这样一个事实,即转换为十进制不会产生这些结果......
我有一个xml变量,其中包含一组要在表中查找的ID。查询时,我尝试了多个版本,但以下(根据我的测试)似乎是最快的:
declare @idsxml as xml (IdSchemaColelction) = '<root><Id>505766</Id><Id>458073</Id><Id>460689</Id><Id>464050</Id></root>'
SELECT * FROM entity
WHERE @idsXml.exist('/root/Id[data(.)=sql:column("id")]') = 1
Run Code Online (Sandbox Code Playgroud)
问题在于查询计划具有以下警告“表达式中的类型转换(CONVERT_IMPLICIT(sql_variant,CONVERT_IMPLICIT(numeric(38,10),[xmlTest]。[dbo]。[dbo]。[entity]。[id],0),0 ))可能会影响查询计划选择中的“ CardinalityEstimate”
我创建了一个XML模式,该模式将Id的文本定义为整数,因此我希望这data(.)=sql:column("id")是整数之间的比较,但此警告可能会导致其他情况。
在这种情况下,删除此警告的正确方法是什么?这是否会对性能产生影响?
表定义和架构定义:
CREATE XML SCHEMA COLLECTION IdSchemaColelction AS '
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" >
<xs:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes"
schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd"/>
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Id" type="sqltypes:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
'
go
create table entity ( id int not null primary key)
Run Code Online (Sandbox Code Playgroud) 我试图在使用 sql 选择值时获取 xml 节点的索引:
这是代码:
declare @myxml xml ='
<Departments>
<Department>
<Employee>
A
</Employee>
<Employee>
B
</Employee>
</Department>
<Department>
<Employee>
C
</Employee>
<Employee>
D
</Employee>
</Department>
</Departments>'
Select Emp = m.value('.','varchar(30)')
from @myxml.nodes('Departments/Department/Employee') X(m)
Run Code Online (Sandbox Code Playgroud)
上述查询的输出:
Emp
A
B
C
D
Run Code Online (Sandbox Code Playgroud)
预期输出:
Emp Department_Index
A 1
B 1
C 2
D 2
Run Code Online (Sandbox Code Playgroud)
即我想要与部门下每个员工相对应的部门索引。这里员工A和B属于部门第一部门,员工C和D属于部门第二部门。
所以我希望这将复杂的 XML 子项与没有唯一键的父项连接起来。
我正在尝试在 sql server 本地 db 数据库上使用 bcp。首先 bcp 甚至可以在本地数据库上工作吗?如果我尝试在常规 sql server 数据库上使用此命令。
exec master.dbo.xp_cmdshell 'bcp db.dbo.table out c:\test\results.txt -w -T -S <server>'
Run Code Online (Sandbox Code Playgroud)
它工作正常......如果我将服务器更改为localhost\(localdb)\v11.0它说它找不到实例,则没有错误。香港专业教育学院试图寻找整个网络。我想知道如何让它与本地数据库一起工作。任何帮助都会受到赞赏
SQL Server 是否有与HEX和UNHEXMySQl 等效的功能?
通过其他人构建的服务器查看,我注意到时间以int格式存储.通过插入一些数据,我可以进行以下扣除:
285571对应于上午6:51:00(加减去2秒)
对于那些要求的人,日期存储在自19/1年1月1日以来的另一列中.
问题是:用于时间转换的神奇公式是什么?
谢谢.
Declare @text='i #want to extract all #hastag out of this string, #delhi #Traffic'
Run Code Online (Sandbox Code Playgroud)
所需的输出将在string: "#want,#hastag,#delhi,#Traffic"或table中.
我在 SQL 数据库中有一些数据以下面的格式存储,我想将其转换为可读的字符串:
540045005300540049004E00470031003200330034
Run Code Online (Sandbox Code Playgroud)
我想运行某种 SELECT 语句来返回应该是的文本TESTING1234
它似乎是十六进制格式,每个字符之间用 00 分隔,所以如果我运行这些语句:
SELECT CHAR(0x54)
SELECT CHAR(0x45)
Run Code Online (Sandbox Code Playgroud)
这将返回:
T
E
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在一条语句中转换整个字符串吗?
谢谢!
我正在尝试打开一个 JSON 字符串并将每个键作为它自己的列。JSON 列位于具有键和多态 ID 的元数据表中。
我希望能够将每个键解析为它自己的列,并为每个多态 id 填充其对应的值。
我可以使用 json_query 逐个解析每个键,但是我看到有一个函数调用 openjson 可以解析整个字符串,但是我不知道如何使用它,因为文档中的示例是在集合上应用该函数值而不是表中的列。如果有比使用 json_query 更简单的方法来解析 JSON 字符串?
我正在尝试(有效地)从连接表中获取行,其中startdate是cpid中的最新行 - 对于选定的cpid.
这是一个连接表中数据的示例,其中我想要用<<<标记的行
connid cpid startdate
1 20 7/17/16
2 20 8/23/16
3 20 9/12/16 <<<
4 30 6/17/16
5 30 8/23/16 <<<
6 40 2/24/16
7 40 3/17/16
8 40 5/18/16 <<<
etc...
Run Code Online (Sandbox Code Playgroud)
此查询返回最新的startdate和cpid,但我不确定如何将其与自身连接以获得我需要的结果:
select cpid, max(startdate)
from connections
where cpid in (
20,
30,
40
)
group by cpid
Run Code Online (Sandbox Code Playgroud)
我正在寻找的结果如下:
connid cpid startdate
3 20 9/12/16
5 30 8/23/16
8 40 5/18/16
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激!
ROBM