我发现这个答案很有用: Oracle中的Accent和不区分大小写的COLLATE,但我的问题是关于使用版本9 Oracle db进行搜索.
我尝试过这样的查询:
SELECT column_name
FROM table_name
WHERE NLSSORT(column_name, 'NLS_SORT = Latin_AI')
LIKE NLSSORT('%somethingInDB%', 'NLS_SORT = Latin_AI')
Run Code Online (Sandbox Code Playgroud)
但是没有返回任何结果.
我创建了一个小的Java文件来测试:
import org.apache.commons.dbcp.BasicDataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DbCollationTest
{
public static void main(String[] args) throws SQLException
{
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
dataSource.setUrl("url");
dataSource.setUsername("usr");
dataSource.setPassword("pass");
Connection conn = null;
PreparedStatement createStatement = null;
PreparedStatement populateStatement = null;
PreparedStatement queryStatement = null;
PreparedStatement deleteStatement = null;
ResultSet rs = null;
try
{
conn …Run Code Online (Sandbox Code Playgroud) 我需要查询SQLite数据库中的表,以返回表中与给定单词集匹配的所有行.
更确切地说:我有一个包含约80,000条记录的数据库.其中一个字段是文本字段,每条记录大约100-200个字.我想要做的是获取200个单词关键字{"apple","orange","pear",...}的列表,并检索表中包含至少一个的所有记录的集合描述列中的关键字术语.
显而易见的方法是使用以下方法:
SELECT stuff FROM table
WHERE (description LIKE '% apple %') or (description LIKE '% orange %') or ...
Run Code Online (Sandbox Code Playgroud)
如果我有200个术语,我最终会看到一个大而讨厌的SQL语句,在我看来是笨拙的,糟糕的做法,并且不奇怪需要花费很长时间来处理 - 每1000条记录超过一秒.
这个答案更好的SQLite Select语句的性能似乎接近我所需要的,因此我创建了一个索引,但根据http://www.sqlite.org/optoverview.html sqlite如果LIKE不使用任何优化运算符与开头%通配符一起使用.
不是SQL专家,我假设我这样做是愚蠢的.我想知道具有更多经验的人是否可以建议一种更明智,也许更有效的方法来做到这一点?
或者,我可以使用更好的方法解决问题吗?
我的一个表中有一个包含此字符串的字段:
!"#¤%&/()=?´`?=)(/&%¤#"!\'\'"'
Run Code Online (Sandbox Code Playgroud)
(仅用于测试目的).我已经尝试了无数的查询来正确选择这个字段,当然没有返回任何错误,但我似乎无法做到正确.
这是我目前使用的查询:
SELECT * FROM mytable WHERE `column` LIKE '%!"#¤%&/()=?´`?=)(/&%¤#"!\\\'\\\'"\'%'
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释一下我的做法是不是正确的?'我应该逃避任何其他角色(除了)吗?我还没有在任何地方读过它...(但我尝试在precent符号之前添加反斜杠).
如果字段是AES_ENCYPTED,我将如何使用WHERE和LIKE serach执行Mysql SELECT?
例:
SELECT AES_DECRYPT(place,'"+salt+"'),AES_DECRYPT(web_address,'"+salt+"')
FROM access
WHERE place= LIKE '%(AES_ENCRYPT('"+searchStr+"','"+salt+"'))',%')
Run Code Online (Sandbox Code Playgroud)
基本上,在加密列上执行搜索,并在两端使用LIKE通配符 $searchStr
我怎么能在mysql中检查一个值是否在另一个表中的多个字段内?
就像是
SELECT * FROM table WHERE concat('%',value,'%') NOT LIKE IN(SELECT field FROM anothertable)
Run Code Online (Sandbox Code Playgroud)
但我不认为这是对的,不是吗?
你好再次Stackoverflow!2 MySQL问题.
$query = " SELECT
stationname
FROM
stations
WHERE
stationname >= '". mysql_real_escape_string($_GET['letter']) ."'
ORDER BY
stationname
";
Run Code Online (Sandbox Code Playgroud)
Firstoff,这是第一个查询.在URL中是$_GET['letter']包含字母字符的参数集.我正在尝试选择所有stationname开头的行$_GET['letter'].所以我在其他Stackoverflow主题中找到了这个解决方案,但它似乎不起作用,我得到了所有的行,而不仅仅是那一行.编辑:似乎它检查所有的字符stationname,而不仅仅是起始字母,我怎么能得到它?
$query = " SELECT
stationname
FROM
stations
WHERE
stationname
LIKE
'". mysql_real_escape_string($_POST['search']) ."'
";
Run Code Online (Sandbox Code Playgroud)
第二个也是最后一个问 我想为我的网站制作一个搜索引擎,选择stationname包含的所有行$_POST['search'].但是当我有2行时,例如cheese一个被调用而另一个被调用cheese2,我搜索cheese,只有cheese被选中,当我搜索时cheese2,只会cheese2被选中.有没有办法选择cheese和cheese2?
对于正在处理的每个文件,正在检查其名称以满足条件.例如,给定以下过滤器列表:
$excludeFiles = @"
aaa.bbb
ccccc.*
ddddd???.exe
"@ | SplitAndTrim;
Run Code Online (Sandbox Code Playgroud)
如果文件与任何行匹配,它应该排除处理文件.试图避免match/regex,因为这个脚本需要由不了解它的人修改,并且有几个地方需要实现它.
$excludedFiles和类似的故意定义为here-string.它允许最终用户/操作员直接从CMD/Powershell窗口粘贴一堆文件名.
似乎Powershell不接受-like数组,所以我不能这样写:
"ddddd000.exe" -like @("aaa.bbb", "ccccc.*", "ddddd???.exe")
Run Code Online (Sandbox Code Playgroud)
我错过了一个选项吗?如果它不是Powershell本身支持的,那么实现它的最简单方法是什么?
嗨,我担心如何实现一个简单的搜索查询,我的方案是:
tag VARCHAR 255
Run Code Online (Sandbox Code Playgroud)
现在我需要在标签字段内搜索,我可以使用两种查询:
SELECT * FROM table WHERE tag LIKE '%1111%' OR LIKE '%2222%' OR LIKE '%3333%';
Run Code Online (Sandbox Code Playgroud)
要么
SELECT * ,MATCH(tag) AGAINST('+1111','+2222','+3333' IN BOOLEAN MODE) as score FROM table ORDER BY score DESC ;
Run Code Online (Sandbox Code Playgroud)
哪个更准确/更准确哪个更快?
谢谢
我有这个:
query = query.Where(s => s.ShowTypeDescription == showTypeDescription);
Run Code Online (Sandbox Code Playgroud)
为了构建动态SQL,为了不同的变量多次.
我将如何改变以上内容来说:
query = query.Where(s => s.ShowTypeDescription **LIKE** showTypeDescription);
Run Code Online (Sandbox Code Playgroud)
?
这是我的情景.
SQL Server 2014标准版,我有一个具有SQL_Latin1_General_CP437_BIN2区分大小写的排序规则的数据库.
我想执行一个LIKE查询,它应该返回输出而不管区分大小写.
例如:如果我执行Like查询以使用userName'John'获取记录,它也应该返回行,而不管区分大小写"JOHN","John","john","joHN".
我尝试使用Lcase,Ucase但是我收到了错误
Msg 195,Level 15,State 10,Line
4'LCASE'不是公认的内置函数名.
这是我的示例查询
SELECT TOP 300 *
FROM
(SELECT
userNo, userName, Place, Birthdate
FROM usertable
WHERE personid = 2
AND (Name LIKE LCASE('%john%'))
UNION
SELECT
userNo, userName, Place, Birthdate,
FROM usertable2
WHERE personid = 2
AND (Name LIKE LCASE( '%john%') OR Place LIKE LCASE('%NY%')) ) a
ORDER BY
userNo
Run Code Online (Sandbox Code Playgroud)
伙计们帮助我提出宝贵的建议,我对使用基于校对的数据库感到困惑.
sql-server collation case-insensitive sql-like sql-server-2014
sql-like ×10
mysql ×5
select ×3
arrays ×1
asp.net ×1
c# ×1
collation ×1
database ×1
encryption ×1
escaping ×1
in-operator ×1
java ×1
linq ×1
match ×1
not-operator ×1
oracle ×1
performance ×1
php ×1
powershell ×1
sql-server ×1
sqlite ×1