当在oracle中使用LIKE运算符来匹配任何字符时,我不能使用[ 说明符 ]例如.找出以's'或'r'开头的客户名称.所以我们不能将查询写为"select*from emp where customer LIKE'[sr]%'";
我们不能在ORACLE中使用LIKE运算符的"[]"括号吗?
哪一个性能更快?
SELECT field1, field2, field3, field4
FROM MyTable
WHERE field5 LIKE '%AL'
Run Code Online (Sandbox Code Playgroud)
与
SELECT field1, field2, field3, field4
FROM MyTable
WHERE field5 IN ('AAL', 'IAL')
Run Code Online (Sandbox Code Playgroud)
或者它没有任何区别?
我使用Java 7 Servlets和Tomcat 7作为服务器,使用MySQL作为数据库.我正在尝试对用户进行一些搜索,但是我的SQL中可能存在一些问题,有人能看到问题吗?关键是lasNameFragment是姓氏的片段,我搜索在姓氏中有这个片段的用户.没有LIKE的列表用户工作正常,所以问题必须在这两行中的某个地方.
preparedStatement = connection.prepareStatement("SELECT users.id AS id, login, name, lastname, password, sex, birth, info WHERE lastname LIKE ?;");
preparedStatement.setString(1, "%" + lastNameFragment + "%");
Run Code Online (Sandbox Code Playgroud)
错误:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE lastname LIKE '%Mot%'' at line 1
Run Code Online (Sandbox Code Playgroud)
Mot是lastnamefragment的值,我得到表单搜索输入.
我写了一个查询来对税项进行分组,如果税是空的,我不想显示税名.这该怎么做?请检查我的sql server语句:
SELECT
'CENTRAL EXCISE DUTY' AS 'TaxName',
SUM(TaxAmount) AS 'Tax'
FROM
PMT_InvoiceTaxAttribute
WHERE
InvoiceID = 100
AND TaxAttributeName NOT LIKE '%IBR%'
AND TaxAttributeName NOT LIKE '%CST%'
AND TaxAttributeName NOT LIKE '%VAT%'
UNION
SELECT
'CST' AS 'TaxName',
SUM(TaxAmount) AS 'Tax'
FROM
PMT_InvoiceTaxAttribute
WHERE
InvoiceID = 100
AND TaxAttributeName LIKE '%CST%'
UNION
SELECT
'VAT' AS 'TaxName',
SUM(TaxAmount) AS 'Tax'
FROM
PMT_InvoiceTaxAttribute
WHERE
InvoiceID = 100
AND TaxAttributeName LIKE '%VAT%'
Run Code Online (Sandbox Code Playgroud)
此Query为Output提供如下:
TaxName Tax
------------- -----------
CENTRAL EXCISE DUTY 15000
CST NULL
VAT …Run Code Online (Sandbox Code Playgroud) addColumnCondition我使用函数,因为我喜欢它如何形成多个查询的查询.但我在文档中找不到任何改变它的比较操作,从简单= needle到a LIKE %needle%.有一个函数可以执行LIKE,addSearchCondition()但是它意味着获得相同的查询形成结果,我将不得不做一些循环和合并条件,如果有更好的解决方案,我想避免.
这是代码
foreach($query_set as $query){
foreach($attributes as $attribute=>$v){
$attributes[$attribute] = $query;
}
$criteria->addColumnCondition($attributes, 'OR', 'AND');
}
Run Code Online (Sandbox Code Playgroud)
而我正在形成像这样的条件
(business_name=:ycp0 OR payment_method=:ycp1) AND (business_name=:ycp2 OR payment_method=:ycp3)
Run Code Online (Sandbox Code Playgroud)
那么有没有办法配置使用的功能LIKE %:ycp0%而不是简单的=:ycp0.
任何帮助将不胜感激.
谢谢.
我已经搜索了很多答案,但我还没有找到以下简单任务的解决方案:
我有一个冗长的TextString,并希望找到与其中的字符串'Text'完全匹配.
TextString LIKE '% Text %'
Run Code Online (Sandbox Code Playgroud)
给出所有出现的'text'和'Text',也开始和/或结束一个单词.我只想要出现'Text'(区分大小写),带有前面和后面的''.
我知道SPACES 的行为LIKE和=相对于SPACES 的行为,所以没有必要再次解释这个问题,因为它已在本网站的其他地方完成.
我正在使用Dynamic SQL创建一个将要执行的'SELECT'SQL语句.在我正在创建的SQL语句中,我想使用'LIKE'运算符,但因为它使用了引号'',它与'SELECT'语句开头使用的引号相冲突.
SET @sql = 'SELECT * FROM LogTable WHERE Application LIKE ' + @ApplicationName + ' ;'
Run Code Online (Sandbox Code Playgroud)
假设'@ApplicationName = TestApp',上面的动态SQL'@sql'变量将生成以下SQL语句:
SELECT * FROM LogTable WHERE Application LIKE TestApp ;
Run Code Online (Sandbox Code Playgroud)
这会导致错误,因为"TestApp"周围不存在引号.如何在动态SQL中创建引号,允许使用"LIKE"运算符?如何创建下面的SQL语句:
SELECT * FROM LogTable WHERE Application LIKE 'TestApp' ;
Run Code Online (Sandbox Code Playgroud) 我想在sqlplus中运行"Like query",但查询没有返回预期的结果.这是查询.
select *
from field
where id like 'D.2._';
Run Code Online (Sandbox Code Playgroud)
我期待的结果包括id D.2.1,D.2.2,D.2.3等(但不是D.2.11).
我错过了什么?我需要在Sqlplus和SQL开发人员中使用此查询.
我有一张名字表:
约翰·
彼得·
彼得-保罗·
玛丽
我有一个这些名称的下拉列表,我在顶部添加了"全部"作为选项.
我想将从下拉列表中选择的名称作为参数传递给where子句.
我想要做的只是如果名称没有作为'全'传递,则只有where子句
SELECT City, State
FROM EmployeeDetails
WHERE @NAME =
CASE @NAME
WHEN 'All' THEN '1=1'
ELSE (EmployeeDetails.NAME LIKE '' + @NAME + '%')
Run Code Online (Sandbox Code Playgroud)
我不能让这个工作.ELSE语句在单词'LIKE'附近给出错误'语法错误.
查看我发现的其他StackOverflow问题:
当运行不在CASE语句中的WHERE子句时,它适用于特定名称,例如:
WHERE (EmployeeDetails.NAME LIKE '' + @NAME + '%')
Run Code Online (Sandbox Code Playgroud)
如果我搜索彼得,它会按预期返回2个结果.玛丽1结果等
我显然无法将'全部'传递给那个人.
我想查找所有以开头的表TB_,因此我编写了以下脚本:
select *
from INFORMATION_SCHEMA.TABLES
where TABLE_NAME like 'TB_%'
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,我得到了以下结果:
TB103_xxx
TB037_bbb
TB104_ccc
Run Code Online (Sandbox Code Playgroud)
我很好奇为什么?