查询代码和查询:
ps = conn.prepareStatement("select instance_id, ? from eam_measurement where resource_id in (select RESOURCE_ID from eam_res_grp_res_map where resource_group_id = ?) and DSN like '?' order by 2");
ps.setString(1,"SUBSTR(DSN,27,16)");
ps.setInt(2,defaultWasGroup);
ps.setString(3,"%Module=jvmRuntimeModule:freeMemory%");
rs = ps.executeQuery();
while (rs.next()) { bla blah blah blah ...
Run Code Online (Sandbox Code Playgroud)
返回一个空的ResultSet.
通过基本的调试我发现它的第三个绑定是问题,即
DSN like '?'
Run Code Online (Sandbox Code Playgroud)
我尝试了各种各样的变化,其中最明智的似乎是使用:
DSN like concat('%',?,'%')
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我错过'了连接字符串的两边,所以我尝试:
DSN like ' concat('%',Module=P_STAG_JDBC01:poolSize,'%') ' order by 2
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到一种方法让他们参与其中.
我错过了什么?
这是我的查询导致语法错误:
SELECT *
FROM account_invoice,sale_order
WHERE sale_order.name LIKE %account_invoice.origin%
Run Code Online (Sandbox Code Playgroud)
account_invoice.origin字段包含sale_order.name的文本以及其他文本,因此我需要在account_invoice.origin字符串中的任何位置匹配sale_order.name字符串.
我正在使用PostgreSQL 8.4.
我正在尝试查找包含大写6个或更多字母数字字符串的记录.一些例子:
PENDING 3RDPARTY CODE27
Run Code Online (Sandbox Code Playgroud)
我正在使用以下声明:
SELECT Details
FROM MyTable
WHERE Details LIKE '%[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]%';
Run Code Online (Sandbox Code Playgroud)
这将返回包含任何6个或更多字母单词的所有记录,无论大小写如何.
我添加了一个COLLATE声明:
SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]%';
Run Code Online (Sandbox Code Playgroud)
这没有任何改变.无论如何,它仍会返回带有6个或更多字母单词的记录.
就像测试一样,我试过:
SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%pending%';
SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%PENDING%';
Run Code Online (Sandbox Code Playgroud)
这两种方法都有效,分别返回包含"待定"和"待定"的记录.所以问题似乎是LIKE克劳斯的模式匹配.
如何执行区分大小写的搜索?
我在SQL Server 2012中有这个表:
Id INT
DomainName NVARCHAR(150)
Run Code Online (Sandbox Code Playgroud)
并且该表具有这些DomainName值
这个值:
mail.othersite.com
Run Code Online (Sandbox Code Playgroud)
我需要选择字符串以列值结束的行,对于此值,我需要获取行no.3 othersite.com
它是这样的:
DomainName Like '%value'
Run Code Online (Sandbox Code Playgroud)
但反过来......
'value' Like %DomainName
Run Code Online (Sandbox Code Playgroud) 我想使用参数占位符 - 例如?1 - 与%外卡.也就是说,"u.name LIKE%?1%"(虽然这会引发错误).文档有以下两个例子:1.
// Example - $qb->expr()->like('u.firstname', $qb->expr()->literal('Gui%'))
public function like($x, $y); // Returns Expr\Comparison instance
Run Code Online (Sandbox Code Playgroud)
我不喜欢这样,因为没有针对代码注入的保护.
2.
// $qb instanceof QueryBuilder
// example8: QueryBuilder port of: "SELECT u FROM User u WHERE u.id = ?1 OR u.nickname LIKE ?2 ORDER BY u.surname DESC" using QueryBuilder helper methods
$qb->select(array('u')) // string 'u' is converted to array internally
->from('User', 'u')
->where($qb->expr()->orx(
$qb->expr()->eq('u.id', '?1'),
$qb->expr()->like('u.nickname', '?2')
))
->orderBy('u.surname', 'ASC'));
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个,因为我需要在对象的属性中搜索术语 - 也就是说,我需要两侧的外卡.
我有这个标签表
CREATE TABLE IF NOT EXISTS `Tags` (
`id_tag` int(10) unsigned NOT NULL auto_increment,
`tag` varchar(255) default NULL,
PRIMARY KEY (`id_tag`),
UNIQUE KEY `tag` (`tag`),
KEY `id_tag` (`id_tag`),
KEY `tag_2` (`tag`),
KEY `tag_3` (`tag`),
KEY `tag_4` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2937 ;
INSERT INTO `Tags` (`id_tag`, `tag`) VALUES
(1816, '(class'),
(2642, 'class\r\n\r\nâ?¬35'),
(1906, 'class\r\nif'),
(1398, 'class'),
(2436, 'class)'),
(1973, 'class:\n1.'),
(2791, 'classes'),
(1325, 'New'),
(2185, 'pack'),
(1905, 'packed'),
(1389, 'WebClass');
Run Code Online (Sandbox Code Playgroud)
我想取其中标签匹配关键字的所有记录class或pack或new与这表明该3个关键字的实际与标记字段匹配的另一场一起.
以下查询未提供正确的结果查询1
select …Run Code Online (Sandbox Code Playgroud) 我正在使用此查询来选择数据:
mysql_query("SELECT * FROM products WHERE product_name LIKE '%".$search."%'");
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,它有时会选择比我想要的更多.
例如,我想选择产品"BLA",但我的查询也选择产品"BLABLA".要清楚,如果我想选择"产品1",我不希望查询选择"产品11".
有人知道如何管理吗?
谢谢.
我有一个包含两个字符串列的表:Url和ModelId.我需要返回Url包含ModelId的记录,如下所示:
SELECT Id, Url, ModelId WHERE Url like "%ModelId%"
Run Code Online (Sandbox Code Playgroud) 有没有办法在pandas文本DataFrame列上执行与SQL的LIKE语法类似的操作,以便返回索引列表或可用于索引数据帧的布尔值列表?例如,我希望能够匹配列以"prefix_"开头的所有行,类似于WHERE <col> LIKE prefix_%SQL.
我可以更换的 = 与声明LIKE一个整数?
通过例如.是以下相同的事情:
select * from FOOS where FOOID like 2
// and
select * from FOOS where FOOID = 2
Run Code Online (Sandbox Code Playgroud)
我宁愿使用LIKE而不是=因为%当我没有FOOID过滤器时我可以使用...
SQL Server 2005.
编辑1 @Martin

sql-like ×10
mysql ×3
sql ×3
select ×2
sql-server ×2
case ×1
collate ×1
doctrine-orm ×1
dql ×1
java ×1
jdbc ×1
oracle ×1
pandas ×1
postgresql ×1
wildcard ×1