我想使用参数在我们的日志表中的字段中搜索嵌入字符串中的数字.
从vwLogs中选择*,其中log_time> '02/24/2009'和消息('%2009022508241446%')
我知道当where子句是等号时如何使用参数但不知道怎么用'Like'来做
这似乎不对
WHERE message like ('%@ErrorMessage%')
Run Code Online (Sandbox Code Playgroud)
我刚试过这个并没有用.唯一新的是消息搜索部分
protected void btnRunQuery_Click(object sender, EventArgs e)
{
string strConn, strSQL;
strConn = @";";
strSQL = @"SELECT * FROM weblogs.dbo.vwlogs WHERE Log_time >= @BeginDate AND Log_Time < @EndDate AND (client_user=@UserName OR @UserName IS NULL) AND (message like '%' + @ErrorNumber + '%' OR @ErrorNumber IS NULL) ORDER BY Log_time DESC";
using (SqlConnection cn = new SqlConnection(strConn))
{
SqlCommand cmd = new SqlCommand(strSQL, cn);
cmd.Parameters.AddWithValue("@UserName", txtUserName.Text);
cmd.Parameters.AddWithValue("@ErrorNumber", txtErrorNumber.Text);
cmd.Parameters.Add("@BeginDate", SqlDbType.DateTime).Value =
DateTime.Parse(txtBeginDate.Text).Date; …Run Code Online (Sandbox Code Playgroud) 这是我的第一个问题,我希望它很简单,快速回答!
基本上,我有以下代码:
$variable = curPageURL();
$query = 'SELECT * FROM `tablename` WHERE `columnname` LIKE '$variable' ;
Run Code Online (Sandbox Code Playgroud)
如果我回显$变量,它会打印当前页面的url(这是我页面上的javascript)
最终,我想要的是能够搜索搜索术语是当前页面的URL,并使用前面和后面的通配符.我不确定这是否可行,或者我是否只是语法错误,因为我没有错误,根本没有结果!
我试过了 :
$query = 'SELECT * FROM `tablename` WHERE `columnname` LIKE '"echo $variable" ' ;
Run Code Online (Sandbox Code Playgroud)
但同样,我可能会错过或使用错位的";等等
请告诉我我做错了什么!
我有一个表在SQL Server 2005中具有以下列:
DocID NSN QTY
-----------------
DHA12 32 5
DSRB23 22 45
TF22 70 23
Run Code Online (Sandbox Code Playgroud)
每当我执行以下查询以获取所有具有以DSRB或DHA开头的DocId的NSN时,它都会给我空集:
SELECT DocId, NSN, Qty, RequestDate, ReceiveDate
FROM Orders
WHERE (DocID LIKE '%DSRB%')
AND (DocID LIKE '%DHA%')
Run Code Online (Sandbox Code Playgroud)
我想有两个LIKE子句的问题,因为当我删除最后一个LIKE子句时,查询工作正常.
假设这是我需要的查询:
SELECT * FROM `products` WHERE `keywords` LIKE "%(SELECT `key` FROM `keywords` WHERE `slug` = '%d8%af%db%8c%d9%88%d8%a7%d8%b1' LIMIT 1)%"
Run Code Online (Sandbox Code Playgroud)
目前它不起作用并且在满足条件的记录时返回零结果.
我想知道这里有什么问题?
如果我在Toad中运行此查询:
SELECT BANDID, BANDNAME
FROM WOODSTOCK
WHERE BANDNAME LIKE '%THE%'
Run Code Online (Sandbox Code Playgroud)
..它只是花花公子,并返回一堆行.但是,大概相当于代码:
const string sql = @"SELECT BANDID, BANDNAME
FROM WOODSTOCK
WHERE BANDNAME LIKE '%:BANDNAMEPORTION%'";
. . .
ocmd.Parameters.Add("BANDNAMEPORTION", BandNamePortion);
. . .
Run Code Online (Sandbox Code Playgroud)
...不返回任何记录.
我已经在DB2上执行了查询:
SELECT * FROM MYTABLE WHERE MYFIELD LIKE '%B'
Run Code Online (Sandbox Code Playgroud)
虽然我知道数据库中有以"B"结尾的记录,但查询没有返回任何结果.经过一些研究,似乎DB2没有识别出不以'%'结尾的LIKE表达式.所以以下查询将起作用:
SELECT * FROM MYTABLE WHERE MYFIELD LIKE '%B%'
Run Code Online (Sandbox Code Playgroud)
但自然不如预期的那样,因为它只返回行,其中MYFIELD包含'B',但不会以它结尾.
如何绕过那个噱头,嗯,功能?如何在类似LIKE的表达式中匹配单词末尾的文本?
我正在尝试创建一个MySQL查询,当提供邮政编码时,它将返回一行(或更多,但我只对单行感兴趣)区域建议.
所以,我有一张这样的桌子
area_id | postcode_start
1 | NE
2 | DL
3 | DL1
4 | DL2
5 | DL6
...
Run Code Online (Sandbox Code Playgroud)
我希望提供一个邮政编码,例如DL5 8TB,并1 | DL在第一个字符匹配时返回该行.
另一个例子DL6 4GH将返回两行,5 | DL6和2 | DL
SELECT *
FROM (`area_postcodes`)
WHERE CONCAT(LOWER(`area_postcodes`.`postcode_start`),'%')
LIKE 'dl5 8tb';
Run Code Online (Sandbox Code Playgroud)
显然它是一个有效的查询,但它总是返回一个空集.
你会看到我已经将通配符添加%到了查询的另一端,但它似乎不起作用,我不知道在哪里甚至考虑猜测如何去做,它几乎就像是反向的正常MySQL LIKE查询.
我有一个场景,我需要执行以下操作:
SELECT *
FROM
[dbo].[MyTable]
WHERE
[Url] LIKE '%<some url>%';
Run Code Online (Sandbox Code Playgroud)
我必须在Url('%<some url>%')的开头和结尾使用两个%(通配符),因为用户应该能够搜索完整的URL,即使他键入了部分文本.例如,如果网址为http://www.google.co.in且用户输入"goo",则网址必须出现在搜索结果中.LIKE运营商正在导致性能问题.我需要一个替代方案,以便我可以摆脱这个声明和通配符.换句话说,我不想在这种情况下使用LIKE语句.我尝试使用T-SQL,CONTAINS但它没有解决我的问题.除了可以执行模式匹配并快速提供结果之外,还有其他可用选择吗?
如果我尝试WHERE email = ?它的工作,但如果我尝试下面的代码它不会.有任何想法吗?谢谢.
DB::connection('operator')->select("SELECT * FROM users WHERE email LIKE '%?%'", array('test'));
Run Code Online (Sandbox Code Playgroud)
这就是它的getQueryLog()样子.
array(3) {
["query"]=>
string(213) "SELECT * FROM users WHERE email LIKE '%?%'"
["bindings"]=>
array(1) {
[0]=>
string(1) "test"
}
["time"]=>
float(1.45)
}
Run Code Online (Sandbox Code Playgroud) 我想从表中删除所有记录,其中选择的字符串值包含在另一个表中的另一个值中(忽略区分大小写).
例如:if value1="Hello"(来自一个表)和value2-"Hello word"(来自另一个表),那么该记录应该被删除.
DELETE FROM [table1]
WHERE value1 LIKE '%' + (SELECT value2 FROM [table2]) + '%'
Run Code Online (Sandbox Code Playgroud)
但是该SQL语句返回错误.