标签: sql-like

不能在JDBC PreparedStatement中使用LIKE查询?

查询代码和查询:

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)

但我似乎无法找到一种方法让他们参与其中.

我错过了什么?

java oracle jdbc sql-like

30
推荐指数
3
解决办法
6万
查看次数

与列名称上的%相似

这是我的查询导致语法错误:

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.

postgresql sql-like

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

如何使用LIKE执行区分大小写的搜索?

我正在尝试查找包含大写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克劳斯的模式匹配.

如何执行区分大小写的搜索?

pattern-matching collate sql-server-2008 sql-like

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

SQL SELECT WHERE字符串以Column结尾

我在SQL Server 2012中有这个表:

Id INT 
DomainName NVARCHAR(150)
Run Code Online (Sandbox Code Playgroud)

并且该表具有这些DomainName值

  1. google.com
  2. microsoft.com
  3. othersite.com

这个值:

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)

sql sql-server select sql-like

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

doctrine2 dql,在进行类似比较时使用带有%wildcard的setParameter

我想使用参数占位符 - 例如?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)

我不喜欢这个,因为我需要在对象的属性中搜索术语 - 也就是说,我需要两侧的外卡.

wildcard code-injection dql doctrine-orm sql-like

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

在MySQL中的SELECT查询中使用LIKE进行SWITCH

我有这个标签表

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)

我想取其中标签匹配关键字的所有记录classpacknew与这表明该3个关键字的实际与标记字段匹配的另一场一起.

以下查询未提供正确的结果查询1

select …
Run Code Online (Sandbox Code Playgroud)

mysql sql case switch-statement sql-like

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

MySQL - 如何使用LIKE搜索精确的单词匹配?

我正在使用此查询来选择数据:

mysql_query("SELECT * FROM products WHERE product_name LIKE '%".$search."%'");
Run Code Online (Sandbox Code Playgroud)

唯一的问题是,它有时会选择比我想要的更多.

例如,我想选择产品"BLA",但我的查询也选择产品"BLABLA".要清楚,如果我想选择"产品1",我不希望查询选择"产品11".

有人知道如何管理吗?

谢谢.

mysql select sql-like

27
推荐指数
5
解决办法
8万
查看次数

MySQL就像另一个领域

我有一个包含两个字符串列的表:Url和ModelId.我需要返回Url包含ModelId的记录,如下所示:

SELECT Id, Url, ModelId WHERE Url like "%ModelId%"
Run Code Online (Sandbox Code Playgroud)

mysql sql-like

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

Pandas文本匹配像SQL的LIKE?

有没有办法在pandas文本DataFrame列上执行与SQL的LIKE语法类似的操作,以便返回索引列表或可用于索引数据帧的布尔值列表?例如,我希望能够匹配列以"prefix_"开头的所有行,类似于WHERE <col> LIKE prefix_%SQL.

string-matching pandas sql-like

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

在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 sql-server sql-server-2005 sql-like

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