SQL 合并 LIKE & AND & =
SQL combine LIKE & AND & =
var getData = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName LIKE '[A-Z]%' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
我似乎无法弄清楚为什么这一行中的 LIKE 部分不起作用!我在 w3schools 上发现,如果您想要该列中的所有值,您可以执行 LIKE '[a-z]%'。但它不起作用。我没有收到任何错误,但我也没有收到任何结果!
当我不想要所有但特定的 (exerVariName) 时,我有第二行,这个行。 (我通过下拉菜单选择一个特定的或 'All'。)
var getDataS = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName = '" + exerVariName + "' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
更新!
我想从数据库中写出一些数据以供查看,所以我 select 'exercise' 使用单选按钮,'exerVariName' 使用下拉菜单, 'fromDate/toDate' 使用一个文本框!
<div>
<select name="exerVariName">
<option value="all">All</option>
@foreach (var get in db.Query(getVariName)) {
<option value="@get.exerVariName">@get.exerVariName</option>
}
</select>
</div>
所以我从数据库中获取了 select 选项数据,除了第一个我用 "all" 作为值放在那里的选项数据。
然后我有这段代码:(thisData放在foreach中)
var thisData = "";
if (exerVariName == "all") {
thisData = getData;
} else {
thisData = getDataS;
}
因此,如果 select-option-dropdown 值是 "all" 一个,thisData = getData 就是这个带 LIKE 的,这一行的重点是选择来自数据库的列,这就是我选择所有字母 (a-z) 的原因。
var getData = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName LIKE '[A-Z]%' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
如果我 select 下拉列表中的特定内容,它将转到 if 语句的 ELSE 部分并使用此行
var getDataS = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName = '" + exerVariName + "' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
如果您需要更多信息,请告诉我!
试试这个
var getData = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName NOT LIKE '%[^A-Z]%' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
如果你想得到所有的测试基础,那么请使用这样的
var getData = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName LIKE '%' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
the point of this line is to choose everything in the column from the database which is why I choose all the letters (a-z).
var getData = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName LIKE '[A-Z]%' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
我觉得你想多了。如果你想要一切(即在列上没有过滤器)然后完全省略子句上的 part/filter。
"SELECT * FROM Test WHERE exercise = " + exercise + " AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
最后,这很容易受到 sql 注入攻击,您应该使用参数化语句而不是字符串连接。如果您使用该语言更新您的问题,我可能能够获得该语言的参数化查询示例。
var getData = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName LIKE '[A-Z]%' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
我似乎无法弄清楚为什么这一行中的 LIKE 部分不起作用!我在 w3schools 上发现,如果您想要该列中的所有值,您可以执行 LIKE '[a-z]%'。但它不起作用。我没有收到任何错误,但我也没有收到任何结果!
当我不想要所有但特定的 (exerVariName) 时,我有第二行,这个行。 (我通过下拉菜单选择一个特定的或 'All'。)
var getDataS = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName = '" + exerVariName + "' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
更新!
我想从数据库中写出一些数据以供查看,所以我 select 'exercise' 使用单选按钮,'exerVariName' 使用下拉菜单, 'fromDate/toDate' 使用一个文本框!
<div>
<select name="exerVariName">
<option value="all">All</option>
@foreach (var get in db.Query(getVariName)) {
<option value="@get.exerVariName">@get.exerVariName</option>
}
</select>
</div>
所以我从数据库中获取了 select 选项数据,除了第一个我用 "all" 作为值放在那里的选项数据。
然后我有这段代码:(thisData放在foreach中)
var thisData = "";
if (exerVariName == "all") {
thisData = getData;
} else {
thisData = getDataS;
}
因此,如果 select-option-dropdown 值是 "all" 一个,thisData = getData 就是这个带 LIKE 的,这一行的重点是选择来自数据库的列,这就是我选择所有字母 (a-z) 的原因。
var getData = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName LIKE '[A-Z]%' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
如果我 select 下拉列表中的特定内容,它将转到 if 语句的 ELSE 部分并使用此行
var getDataS = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName = '" + exerVariName + "' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
如果您需要更多信息,请告诉我!
试试这个
var getData = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName NOT LIKE '%[^A-Z]%' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
如果你想得到所有的测试基础,那么请使用这样的
var getData = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName LIKE '%' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
the point of this line is to choose everything in the column from the database which is why I choose all the letters (a-z).
var getData = "SELECT * FROM Test WHERE exercise = " + exercise + " AND exerVariName LIKE '[A-Z]%' AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
我觉得你想多了。如果你想要一切(即在列上没有过滤器)然后完全省略子句上的 part/filter。
"SELECT * FROM Test WHERE exercise = " + exercise + " AND date >= '" + fromDate + "' AND date <= '" + toDate + "'";
最后,这很容易受到 sql 注入攻击,您应该使用参数化语句而不是字符串连接。如果您使用该语言更新您的问题,我可能能够获得该语言的参数化查询示例。