Sql server 空间索引操作。您可以添加设置ANSI\u警告在SSMSAlso中运行之前,我收到“不允许从数据类型xml隐式转换为nvarchar。请使用CONVERT函数运行此查询。”在运行以下行后:SET@xml=cast((“”+replace(@values,,“

Sql server 空间索引操作。您可以添加设置ANSI\u警告在SSMSAlso中运行之前,我收到“不允许从数据类型xml隐式转换为nvarchar。请使用CONVERT函数运行此查询。”在运行以下行后:SET@xml=cast((“”+replace(@values,,“,sql-server,sql-server-2008,sql-server-2008-r2,Sql Server,Sql Server 2008,Sql Server 2008 R2,空间索引操作。您可以添加设置ANSI\u警告在SSMSAlso中运行之前,我收到“不允许从数据类型xml隐式转换为nvarchar。请使用CONVERT函数运行此查询。”在运行以下行后:SET@xml=cast((“”+replace(@values,,“”),“”+“”)as xml)可以执行此操作以将nvarchar转换为varchar:'SET@xml=cast(“”+replace(CONVERT(varchar(max),@values),但如果您实际使用的是unicode字符,那么这


空间索引操作。您可以添加
设置ANSI\u警告在SSMSAlso中运行之前,我收到“不允许从数据类型xml隐式转换为nvarchar。请使用CONVERT函数运行此查询。”在运行以下行后:SET@xml=cast((“”+replace(@values,,“”),“”+“”)as xml)可以执行此操作以将nvarchar转换为varchar:'SET@xml=cast(“”+replace(CONVERT(varchar(max),@values),但如果您实际使用的是unicode字符,那么这可能不适合您。如果未使用max,则应指定长度。当我在“选择N.值”中将VARCHAR更改为NVARCHAR时,收到错误:选择失败,因为以下设置选项的设置不正确:“ANSI\U警告”。验证集合选项是否正确,可用于索引视图和/或计算列上的索引和/或筛选索引和/或查询通知和/或XML数据类型方法和/或空间索引操作。您可以在上添加
SET ANSI_警告在SSMS中运行之前
--@values has to be varchar list and start & end with comma
declare @values varchar(max) = ',7,34,37,74,85,'
select (case when @values like '%,' + m.Id + ',%' then m.Name else null end)
from #myTable m
case when @values.Include(m.Id) then m.Name else null end
DECLARE @values VARCHAR(50), @XML XML
SET @values = ',7,34,37,74,85,'

SET @XML = cast(('<X>'+replace(@values,',' ,'</X><X>')+'</X>') as xml)

SELECT N.value('.', 'VARCHAR(255)') as value FROM @XML.nodes('X') as T(N)

declare @table table (id varchar(5))
insert into @table(id)
values ('7')

select *
from @table y
where exists (SELECT 1 FROM @XML.nodes('X') as T(N) where N.value('.', 'VARCHAR(255)') = y.id)
create type dbo.Ids_udt as table (Id int not null);
go
create procedure dbo.get_names_from_list (
  @Ids as dbo.Ids_udt readonly
) as 
begin;
  set nocount, xact_abort on;

  select t.Name
  from t
    inner join @Ids i
      on t.Id = i.Id
end;
go
IF OBJECT_ID('tempdb..#Temp') IS NOT NULL
Drop table #Temp

Create table #Temp (ID INt ,Name varchar(5))
INSERT into #Temp
SELECT 7,'AA'  Union all
SELECT 34,'BA' Union all
SELECT 37,'CA' Union all
SELECT 74,'DA' Union all
SELECT 85,'TA'

DECLARE @values varchar(max) = ',,,,,,7,,34,,,74,85,,,,'   --If extra commas are added in starting or end or in between of string it could handle
 SET @values=','+@values+','

SELECT @values= LEFT(STUFF(@values,1,1,''),LEN(@values)-2)

DECLARE @SelectValuesIn TABLE(Value INT)
    INSERT INTO @SelectValuesIn
     SELECT    Split.a.value('.', 'VARCHAR(100)') AS Data  
        FROM  
        (
            SELECT   
                 CAST ('<M>' + REPLACE(@values, ',', '</M><M>') + '</M>' AS XML) AS Data  

        ) AS A CROSS APPLY Data.nodes ('/M') AS Split(a); 

 SELECT * FROM #Temp WHERE ID IN(SELECT Value from @SelectValuesIn)