相关疑难解决方法(0)

选择顺序为IN子句的记录

我有

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)

但我不想使用它,因为我想将它用作存储过程而不是自动生成.

sql t-sql

3
推荐指数
2
解决办法
1万
查看次数

SQL Server中的FIND_IN_SET()等效项

SELECT * FROM users WHERE uid IN (SELECT doctors FROM MainPage WHERE Valid=1)
Run Code Online (Sandbox Code Playgroud)

users值为的表uid INT
Mainpagetabledoctors 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以实现相同的结果?

t-sql sql-server

3
推荐指数
1
解决办法
6200
查看次数

将变量设置为 IN 语句的字符串列表

我可以在不使用动态 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)

t-sql sql-server-2008 ssrs-2008

2
推荐指数
1
解决办法
7871
查看次数

在C#中的SQL查询中将字符串数组作为参数传递

在我用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

c# sql-server sqlcommand sqlcommandbuilder

2
推荐指数
1
解决办法
2万
查看次数

在 T-SQL 中将字符串中的 int 转换为整数

我需要将字符串转换为整数,但出现类型错误。

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 时转换失败

sql t-sql sql-server ssms

2
推荐指数
1
解决办法
3899
查看次数

如何使用python在sql中选择一个很长的id列表

我有一个非常大的数据库,我正在使用,我需要知道如何选择一组没有任何实际模式的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语句吗?谢谢

python sql

1
推荐指数
2
解决办法
3272
查看次数

在哪里使用局部变量

可能重复:
参数化SQL IN子句?
SQL:使用IN子句将字符串转换为IDS

我想在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)

我想要

sql sql-server sql-server-2005 where where-in

1
推荐指数
1
解决办法
1982
查看次数

如何在SQL Server存储过程中使用WHERE id IN(@a_varchar_variable)?

在我的表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

谢谢!

sql stored-procedures sql-server-2008

1
推荐指数
1
解决办法
108
查看次数

如何从循环中删除额外的AND

foreach (string word in allTheseWords)
{
allTheseStringsWhereClause = allTheseStringsWhereClause + 
                             " report=" + 
                             word + 
                             " AND ";
}
Run Code Online (Sandbox Code Playgroud)

问题出在循环之后,SQL子句AND在它的末尾有一个额外的.

我该如何解决?

.net c# string

1
推荐指数
1
解决办法
203
查看次数

在transact sql中遇到IN关键字问题

我正在创建一个脚本,我使用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)

sql t-sql sql-server-2008

1
推荐指数
1
解决办法
104
查看次数