我有
SELECT * FROM Table1 WHERE Col1 IN(4,2,6)
Run Code Online (Sandbox Code Playgroud)
我想选择并返回我在IN子句中指定的指定顺序的记录(第一个显示记录,Col1 = 4,Col1 = 2,......)
我可以用
SELECT * FROM Table1 WHERE Col1 = 4
UNION ALL
SELECT * FROM Table1 WHERE Col1 = 6 , .....
Run Code Online (Sandbox Code Playgroud)
但我不想使用它,因为我想将它用作存储过程而不是自动生成.
SELECT * FROM users WHERE uid IN (SELECT doctors FROM MainPage WHERE Valid=1)
Run Code Online (Sandbox Code Playgroud)
users值为的表uid INTMainpagetabledoctors text1,2,3,4,5
当我运行上面的查询时,只得到1行,这对于uid = 1,但是我想要所有5行。因此在MySQL中,我使用了以下查询:
SELECT *
FROM users
JOIN MainPage ON FIND_IN_SET(uid, doctors)
WHERE Valid = 1;
Run Code Online (Sandbox Code Playgroud)
有效。我正在尝试在SQL Server中找到等效项FIND_IN_SET以实现相同的结果?
我可以在不使用动态 SQL 的情况下将字符串列表分配给一个变量以在 IN 语句中使用吗?
我正在 SSRS 中开发一个报告,它允许用户选择三个可能的值之一作为参数,然后将与该选择关联的值分配给 IN 语句。有些参数有一个关联的值,有些有多个。
情况 1 和 2 运行正常,但情况 3 不能正常运行,因为它是作为标量值而不是列表传递的。我尝试了各种方法来转义每个项目周围的引号,但它不起作用。
declare @items as varchar(50)
set @items =
CASE @parameter
WHEN 1 then 'first'
WHEN 2 then 'second'
WHEN 3 then 'third, fourth'
END
select column1
from table1
where column1 IN (@items)
Run Code Online (Sandbox Code Playgroud) 在我用C#编写的应用程序中,我正在编写一个SQL查询.以下是查询
SELECT [Resource No_] where [Resource No_] In (@resources)
Run Code Online (Sandbox Code Playgroud)
@resources 是具有一个或多个一个字符串的用户输入参数.
我的查询失败而没有显示错误
根据我的说法,查询失败,因为@resources正在传递参数跟随
"'123,'124','125'"
Run Code Online (Sandbox Code Playgroud)
(在开头和结尾有两个引号,这是我的查询失败).
[Resource No_]是NVARCHAR数据库中的类型.
谷歌搜索后,我已经找到了一些关于这个主题的帮助,但所有这些都适用[Resource No_] 于类型Integer
我需要将字符串转换为整数,但出现类型错误。
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 时转换失败
我有一个非常大的数据库,我正在使用,我需要知道如何选择一组没有任何实际模式的id.这是我到目前为止的代码段:
longIdList = [1, 3, 5 ,8 ....................................]
for id in longIdList
sql = "select * from Table where id = %s" %id
result = cursor.execute(sql)
print result.fetchone()
Run Code Online (Sandbox Code Playgroud)
我在想,必须有一个更快的方法来做到这一点......我的意思是我的脚本需要搜索一个拥有超过400万id的数据库.有没有办法可以使用select命令一次性抓取它们.我可以使用带有id列表的where语句吗?谢谢
我想在WHERE IN子句中使用declare局部变量
像这样的东西:
表XYZ
COL1 COL2
1 A
2 B
3 C
4 D
5 E
Run Code Online (Sandbox Code Playgroud)
结果
1 A
2 B
5 E
Run Code Online (Sandbox Code Playgroud)
QUERY
DECLARE @VAR VARCHAR(MAX)
SET @VAR = '1,2,5'
SELECT * FROM XYZ WHERE COL1 IN @VAR
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?
注意:我无法使用服务器功能
我只能创建原始值(通过代码)并将其与我的查询一起使用.我搜索的方式是我只会更改我的var而不是查询本身.
我的代码看起来像:
list (dbparameter)
mylist.add ('@var','1,2,5')
commandsql.returnresult(myQueryInString,mylist)
Run Code Online (Sandbox Code Playgroud)
我想要
在我的表id列的数据类型是int.
我有一个要选择的项目ID列表.
所以,这是我的一些代码:
DECLARE @user_list
SELECT @user_list=(
SELECT user_list
FROM sometable
WHERE rowNum=xxx
);
SELECT *
FROM anotherTable
WHERE user_id IN(@user_list)
Run Code Online (Sandbox Code Playgroud)
但它不起作用,错误消息如:
无法将varchar转换为int
谢谢!
foreach (string word in allTheseWords)
{
allTheseStringsWhereClause = allTheseStringsWhereClause +
" report=" +
word +
" AND ";
}
Run Code Online (Sandbox Code Playgroud)
问题出在循环之后,SQL子句AND在它的末尾有一个额外的.
我该如何解决?
我正在创建一个脚本,我使用IN关键字查询表.当我在IN子句中键入数据时,查询按我的意愿执行.但是当我创建一个包含完全相同数据的变量并使用IN子句中的变量时,它却没有.有任何想法吗???
这是有效的查询
SELECT *
FROM scpcommandeventlog
WHERE MESSAGEid = 3
AND PARAM1 IN('11416407','11416410','11416413','11416417',
'11416419','11416421','11416423','11416427',
'11416432','11416433','11416434','11416435',
'11416438','11416443','11416446','11416448',
'11416451','11416454','11416458','11416462')
Run Code Online (Sandbox Code Playgroud)
这是没有的查询
SELECT * FROM scpcommandeventlog WHERE MESSAGEid = 3 AND PARAM1 IN(@list)
Run Code Online (Sandbox Code Playgroud)
以下是填充@list变量的查询
DECLARE @List varchar(max)
SELECT @List = isnull(@List + ',', '') + '''' + cast(itemid as varchar) + ''''
FROM dbo.ItemList
WHERE sortid LIKE @sortid
Run Code Online (Sandbox Code Playgroud)