gpt4 book ai didi

sql-server - TSQL如何在xml列中选择具有技能的员工

转载 作者:行者123 更新时间:2023-12-02 00:26:29 24 4
gpt4 key购买 nike

在如下表模式中

CREATE TABLE [dbo].[Employee](
[EmployeeId] [uniqueidentifier] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Location] [nvarchar](50) NOT NULL,
[Skills] [xml] NOT NULL
CONSTRAINT [PK_Employee] PRIMARY KEY CLUSTERED
  • 我如何让员工拥有 C# (不区分大小写)编程技巧假设 xml 保存在 Skills列如下。

  • 您能否就其他功能提出建议,以帮助我在使用 xml 数据类型列时进行过滤、排序

<Skills><Skill>C#</Skill><Skill>ASP.NET</Skill><Skill>VB.NET</Skill></Skills>

最佳答案

比较区分大小写,因此您需要同时与 C# 和 C# 进行比较。在 SQL Server 2008 中,您可以使用 upper-case .

declare @T table
(
ID int identity,
Skills XML
)

insert into @T values
('<Skills><Skill>C#</Skill><Skill>ASP.NET</Skill><Skill>VB.NET</Skill></Skills>')
insert into @T values
('<Skills><Skill>CB.NET</Skill><Skill>ASP.NET</Skill><Skill>c#</Skill></Skills>')
insert into @T values
('<Skills><Skill>F#</Skill><Skill>ASP.NET</Skill><Skill>VB.NET</Skill></Skills>')

select ID
from @T
where Skills.exist('/Skills/Skill[contains(., "C#") or contains(., "c#")]') = 1

结果:

ID
-----------
1
2

更新:

这也行。

select T.ID
from @T as T
cross apply T.Skills.nodes('/Skills/Skill') as X(N)
where X.N.value('.', 'nvarchar(50)') like '%C#%'

关于sql-server - TSQL如何在xml列中选择具有技能的员工,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8740826/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com