标签: sql-like

Oracle中使用LIKE进行重音和不区分大小写的排序规则

我发现这个答案很有用: 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)

java database oracle case-insensitive sql-like

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

全文搜索“包含”比“喜欢%”慢

我在SQL Server 2008 x64上的全文本索引有问题。

我有三个表:

具有9万行的TableA

具有12000000行的TableB

具有22000000行的TableC

我创建了具有自动填充功能的FTS目录。

当我查询TableA时:

Select * from TableA where Contains(field1, '"j*"')
Run Code Online (Sandbox Code Playgroud)

我看到11000条记录少于1秒

但是,当我使用相同的查询查询TableB或TableC时,我在2秒内看到250条记录。这显然很慢。

对于相同的表,用“ like%”而不是“ contains”执行的查询少于1秒。

由于表B和C较大,是否存在问题?TableA查询成功。

也许这些表需要更多时间来建立索引?(但他们已经索引(填充)了3天)

一些细节:

对于表B和CI,请始终参阅“人口状况=正在处理通知”(9)

属性“ TableFulltextDocsProcessed”总是增加

(我的SQL Server有一个镜像实例。)

sql-server full-text-search contains sql-like

5
推荐指数
1
解决办法
3726
查看次数

SQLite - 如何返回包含包含一个或多个字符串的文本字段的行?

我需要查询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专家,我假设我这样做是愚蠢的.我想知道具有更多经验的人是否可以建议一种更明智,也许更有效的方法来做到这一点?

或者,我可以使用更好的方法解决问题吗?

sqlite performance select sql-like

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

我应该如何转义此LIKE查询中的字符?

我的一个表中有一个包含此字符串的字段:

!"#¤%&/()=?´`?=)(/&%¤#"!\'\'"'
Run Code Online (Sandbox Code Playgroud)

(仅用于测试目的).我已经尝试了无数的查询来正确选择这个字段,当然没有返回任何错误,但我似乎无法做到正确.

这是我目前使用的查询:

SELECT * FROM mytable WHERE `column` LIKE '%!"#¤%&/()=?´`?=)(/&%¤#"!\\\'\\\'"\'%'
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释一下我的做法是不是正确的?'我应该逃避任何其他角色(除了)吗?我还没有在任何地方读过它...(但我尝试在precent符号之前添加反斜杠).

mysql escaping sql-like

5
推荐指数
2
解决办法
5066
查看次数

MySQL - 不喜欢

我怎么能在mysql中检查一个值是否在另一个表中的多个字段内?

就像是

SELECT * FROM table WHERE concat('%',value,'%') NOT LIKE IN(SELECT field FROM anothertable)
Run Code Online (Sandbox Code Playgroud)

但我不认为这是对的,不是吗?

mysql not-operator in-operator sql-like

5
推荐指数
1
解决办法
6506
查看次数

MySQL:LIKE和First character

你好再次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被选中.有没有办法选择cheesecheese2

php mysql select sql-like

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

Powershell - 对阵阵列

对于正在处理的每个文件,正在检查其名称以满足条件.例如,给定以下过滤器列表:

$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本身支持的,那么实现它的最简单方法是什么?

arrays powershell sql-like

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

Objective-C sqlite在LIKE子句中添加查询参数

sqlite通过C API在Objective-C中使用.我的应用程序的一个预期功能是用户可以搜索人名,并且对于他们输入的每个新字符,执行SQL查询LIKE以查找名称符合匹配条件的所有人.我遇到的问题是参数化LIKE中的匹配,而不是按字面解释问号.也就是说,我相信目前的应用程序正在寻找包含?在其中的人名(没有人).

我的代码看起来像这样:

const char *sql = "SELECT rowid, name, email FROM person WHERE name LIKE '%?%'";
sqlite3_stmt *sqlStatement;
if(sqlite3_prepare_v2(db, sql, -1, &sqlStatement, NULL) != SQLITE_OK) {
    NSLog(@"Problem preparing getFilteredPeopleStubs statement.");
}
if(sqlite3_bind_text(sqlStatement, 1, [searchText UTF8String], -1, SQLITE_TRANSIENT) != SQLITE_OK){
    NSLog(@"Problem binding search text param.");
}
Run Code Online (Sandbox Code Playgroud)

基本上,searchText希望这个名字来自哪里,但目前我认为它只是搜索名字中包含的人?,因为单引号'%?%'.是否有一个解决这个问题的方法仍然允许我使用参数化查询(防止SQL注入)并实现我所追求的目标?

c sqlite objective-c sql-like

5
推荐指数
1
解决办法
2866
查看次数

VB.NET与运算符混淆,模式小于签名

Dim rc As Boolean = "2" Like "*?<*?"
Run Code Online (Sandbox Code Playgroud)

我不明白为什么rc等于True,肯定2不一样*?<*?.

上面的模式需要一个字符串

  • 至少三个字符(两个?和一个<)
  • 其中,<符号是某处内部.

据我所知,<不是一个特殊的角色,这意味着除了<Like运算符之外的其他东西.

使用Visual Studio 2010.

vb.net sql-like

5
推荐指数
1
解决办法
1993
查看次数

在documentDB中搜索substring

这是示例documentDB文档,

我想获得一个或多个科目失败的所有文件

我发现了类似的东西

SELECT 
    *
FROM students s 
JOIN c IN s.subjects 
WHERE c.result = "pass"
Run Code Online (Sandbox Code Playgroud)

我想通过使用c#代码检索

{
  "id": "0066a253-f042-4213-b06e-65b1ea1e49aa",
  "name": "Sunny",
  "rollNo": 123,
  "class": "2nd",
  "section": "B",
  "Department": {
    "name": "CSE",
    "id": "cse",
    "subjects": [
      {
        "id": "subject-1",
        "marksObtained": 66,
        "maxMarks": 100,
        "result": "pass"
      },
      {
        "id": "subject-2",
        "marksObtained": 56,
        "maxMarks": 75,
        "result": "pass"
      },
      {
        "id": "subject-3",
        "marksObtained": 22,
        "maxMarks": 100,
        "result": "fail"
      },
      {
        "id": "subject-4",
        "marksObtained": 36,
        "maxMarks": 50,
        "result": "pass"
      },
      {
        "id": "subject-5",
        "marksObtained": …
Run Code Online (Sandbox Code Playgroud)

c# search sql-like azure-cosmosdb

5
推荐指数
2
解决办法
3900
查看次数