我需要将字符串转换为整数,但出现类型错误。
declare @stringinteger nvarchar(255) null;
set @stringinteger='1,2,3,4'
select *
from user
where id in (@stringinteger)
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
将 nvarchar 值“1,2,3,4”转换为数据类型 int 时转换失败
我正在尝试为删除编写存储过程。但是为了提高性能,我们已将delete sql查询更改为使用IN操作。我要编写接受逗号分隔ID的过程。
我尝试编写一个接受单个条目ID的过程。步骤如下。
CREATE PROCEDURE DeleteListEntry
@entryid int
AS
DELETE FROM LIST_ITEMS
WHERE ENTRY_ID = @entryid;
go
Run Code Online (Sandbox Code Playgroud)
我想知道如何将上述过程转换为接受批量输入。它的SQL查询如下-
DELETE FROM LIST_ITEMS WHERE ENTRY_ID IN (id1, id2, id2, ... );
Run Code Online (Sandbox Code Playgroud) 我需要返回以逗号分隔的字符串发送到存储过程的记录 - 如下所示:
@PMID = 29573145,24106086,20513766,24326307
Run Code Online (Sandbox Code Playgroud)
我有一个存储过程来拉取记录,如
SELECT
data,
PMID
FROM
[dbo].[ADMIN_Publication_JSON]
WHERE
PMID IN (SELECT DATA FROM dbo.Split(@PMID, ','))
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是返回记录集是随机的,我需要它是精确的,因为我的最终用户可以更改顺序,并且记录需要按顺序显示,这将改变逗号字符串中的顺序.这是可能的还是我需要完全改变我提取数据的方式?谢谢
sql sql-server stored-procedures sql-server-2014 sql-server-2016
我正在使用存储过程,并用逗号将其传递给字符串,如下所示:
Apple,Banana,Orange
Run Code Online (Sandbox Code Playgroud)
我想在IN子句中使用此字符串,但是我不想使用
SELECT value
FROM STRING_SPLIT(@MyStr, ',')
Run Code Online (Sandbox Code Playgroud)
我如何生成可以使用的字符串
SELECT *
FROM MyTable
WHERE Fruit IN (@MyStr)
Run Code Online (Sandbox Code Playgroud) 我有那个sql代码
SELECT * FROM table1
WHERE id IN (1,2,3,4,5,6)
Run Code Online (Sandbox Code Playgroud)
我想要那个表达方式
DECLARE @allNeededIds ??? = (1,2,3,4,5,6)
SELECT * FROM table1
WHERE id IN @allNeededIds
Run Code Online (Sandbox Code Playgroud)
我可以在SQL中声明这样的东西,或者我应该使用表格,那么代码会如何看待?我使用MS Sql Server