我在使用 . 创建 GridView 时遇到了奇怪的遭遇SELECT..WHERE..<field> IN (value1, val2...)。
在“配置数据源”选项卡中,如果我对值进行硬编码SELECT .... WHERE field1 in ('AAA', 'BBB', 'CCC'),则系统运行良好。
但是,如果我定义一个新参数并使用变量传递一个串联的值字符串;无论是 @session、Control 还是查询字符串;例如,SELECT .... WHERE field1 in @SESSION结果始终为空。
我又做了一个实验,将参数内容减少到只有一个值,效果很好。
简而言之,如果我硬编码一串值,它可以工作,如果我仅传递一个具有单个值的变量,它可以工作,但如果我传递一个具有两个值的变量;它失败了。
如果我犯了任何错误或者这是一个已知的错误,请告知。
BR SDIGI
我有一种情况,我在页面上显示记录,我需要一种方法让用户选择要在另一页上显示的那些记录的子集.这些记录不存储在任何地方,它是动态生成的东西.我知道我可以使用jquery将逗号分隔的值传递给我的其他网页,但我不确定在sql中最好的方法是说哪个uniqueid在这个id列表中不在表等中我我知道我可以用一堆ors动态构造sql,但这看起来像是一个黑客.还有其他人有什么建议吗?
我需要在两个不同的表上搜索偶然的整数集:
SELECT
col_1, col_2
FROM
LIKES_NUMBERS
WHERE
col_1 IN (1,2,3,5,7,1021,10041411)
SELECT
col_one, col_two
FROM
LIKES_NAMES
WHERE
col_one IN (1,2,3,5,7,1021,10041411)
Run Code Online (Sandbox Code Playgroud)
是否有可以传递给IN的SQL列表类型,以便我不重复自己?例如
DECLARE @stuff UNOBTAINIUM(1,2,3,5,7,1021,10041411)
-- ...
WHERE col_1 IN (@stuff)
-- ...
WHERE col_one IN (@stuff)
Run Code Online (Sandbox Code Playgroud)
想到创建一个临时表,但这看起来很残酷.
你好,
我在将参数传递给“IN”子句时遇到问题。我正在使用以下查询。
询问:
SELECT Topics.Topic_Id FROM Topics
Where Topic_Description IN (''+ @Topics +'')
Run Code Online (Sandbox Code Playgroud)
当参数具有单个值时,此查询有效。我的参数可以有逗号分隔的多个值,例如:“一”、“二”、“三”、“四”。但是只要有多个参数,查询就会失败。如何克服这个?请建议。
谢谢
我必须将上述内容用作存储过程的一部分。我必须将选择查询的结果放入如下游标中:
DECLARE cur_TopicIDs CURSOR FOR SELECT Topics.Topic_Id FROM Topics Where Topic_Description IN (''+ @Topics +'')....等
在这种情况下,我如何按照其他链接中的建议使用动态 sp
我的字符串由(')引用标记组成,如"母亲的爱"......
从c#通过sql查询插入数据时.它显示错误.如何纠正问题并成功插入此类数据?
string str2 = "Insert into tblDesEmpOthDetails (EmpID, Interviewnotes) values ('" + EmpId + "','" + Interviewnotes + "')";
Run Code Online (Sandbox Code Playgroud)
面试笔记的内容包括"母亲的爱"(单引号).执行此查询时,它将错误显示为"字符串后的未闭合引号")"如何插入此类型的字符串?
我正在尝试从数据库中选择记录,其中记录 ID 不在列表中。
看看下面@我的问题。
String Sqlids = "2,6,3,9"; // this is dynamic so the number of element is unknown
String str= "SELECT TOP 1 * FROM student WHERE ID NOT IN (2,6,3,9) ORDER BY NEWID()";
PreparedStatement stat = con.prepareStatement(str);
ResultSet rs = stat.executeQuery();
Run Code Online (Sandbox Code Playgroud)
上面的语句工作正常,但如果我将其更改为
String Sqlids = "2,6,3,9";
String str= "SELECT TOP 1 * FROM student WHERE ID NOT IN (Sqlids) ORDER BY NEWID()";
PreparedStatement stat = con.prepareStatement(str);
ResultSet rs = stat.executeQuery();
//i also try this
String Sqlids = "2,6,3,9"; …Run Code Online (Sandbox Code Playgroud) 我想调用一个sql语句,例如:
Select * From Table Where Column in ('value1', 'value2', 'value3')
Run Code Online (Sandbox Code Playgroud)
是否像设置命令参数的值等于" ('value1', 'value2', 'value3')" 一样简单?
在sql查询中插入一串数字时遇到问题
SELECT *
FROM tablename a
WHERE a.flokkurid IN (3857,3858,3863,3285)
ORDER BY sjodategund, rodun
Run Code Online (Sandbox Code Playgroud)
...要么:
SELECT *
FROM tablename a
WHERE a.flokkurid IN (:strManyNumbers)
ORDER BY sjodategund, rodun
Run Code Online (Sandbox Code Playgroud)
...使用此代码:
using (OracleCommand sel = new OracleCommand(SQL, connectionstring)) {
sel.Parameters.Add(":strManyNumbers",
OracleDbType.Varchar2,
"Client",
ParameterDirection.Input);
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我运行此查询,我得到:
ORA-01722:无效的号码
但如果我只插入一个数字,即"3857",它将返回查询确定数据.
我正在尝试使用 where in 子句在数据库中搜索,但我的字符串采用以下格式:
'233052,57516351,254689'
Run Code Online (Sandbox Code Playgroud)
我需要使用以下查询在我的数据库中进行查询:
SELECT * FROM myTable WHERE field IN (@list_string)
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能做出这个动作?
我需要检索存储在数千个项目的数据库中的信息.如果我通过这种方式逐个进行,则需要花费大量时间(tac是一个8个字符的字符串):
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DataBase\IMEIDB.accdb";
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
connection.Open();
using (OleDbCommand command = connection.CreateCommand())
{
OleDbDataReader reader;
command.CommandText = "SELECT TAC, Name, Model, Year, Manufacturer, LTE FROM Terminales WHERE TAC = @tac";
command.Parameters.AddWithValue("@tac", tac);
reader = command.ExecuteReader();
while (reader.Read())
{
ulong tac = Convert.ToUInt64(reader.GetString(0));
if (this.DiccionarioTerminales.ContainsKey(tac))
{
DiccionarioTerminales[tac].inDB = true;
DiccionarioTerminales[tac].Name = reader.GetValue(1).ToString();
DiccionarioTerminales[tac].Manufacturer = reader.GetValue(2).ToString();
DiccionarioTerminales[tac].Model = reader.GetValue(3).ToString();
DiccionarioTerminales[tac].Year = reader.GetValue(4).ToString();
DiccionarioTerminales[tac].LTE = reader.GetValue(5).ToString();
}
}
command.Dispose();
}
connection.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
它运行良好(我知道我必须使用ExecuteNonQuery()它,如果它只有一个记录,但这个例子只是一个测试),但如果我尝试将tac 10分组10(现在tac是一个字符串 …