相关疑难解决方法(0)

Rails SQL正则表达式

我正在尝试搜索A0001,A0002,A1234,A2351等系列中的最大数字...问题是我正在搜索的列表也有字符串,如AG108939,E092357,AL399,22-30597等等......

基本上,我想在我的数据库中获得最高的####值.我使用以下查询:

@max_draw = Drawing.where("drawing_number LIKE ?", "A%")
Run Code Online (Sandbox Code Playgroud)

这种情况一直有效,直到像AG309这样的数字开始受阻,因为它以A开头,但格式与我正在寻找的格式不同.

我假设这应该是非常直接的正则表达式,但我是新来的,不知道如何正确编写这个查询与正则表达式.以下是我试过的一些东西,只需返回nil:

 @max_draw = Drawing.where("drawing_number LIKE ?", /A\d+/)
 @max_draw = Drawing.where("drawing_number LIKE ?", "/A\d+/")
 @max_draw = Drawing.where("drawing_number LIKE ?", "A[0-9]%")
Run Code Online (Sandbox Code Playgroud)

sqlite activerecord expression ruby-on-rails

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

SQLite.net SQLiteFunction在Linq to SQL中不起作用

我使用System.Data.SQLite.SQLiteFunction在C#中创建了一些自定义SQLite函数.当使用SQLiteDataAdapter执行查询时,它工作得很好,但它不起作用,但是,当使用Linq to SQL时,我会收到错误,指出该函数不存在.

我想底线是,如何让Custom SQLiteFunctions在Linq to SQL中工作?要么让它们加载它们应该的方式,要么通过修改SQLite.Net的源代码使它们成为dll的一部分?

注意:我理解实体框架是首选,这是遗留应用程序,我没有选项来更改它.我尝试手动将函数绑定到DataContext.Connection,没有骰子.


关于尝试修改System.Data.SQLite的背景:我尝试下载源代码,我可以从源代码成功构建,但源代码对我来说有点令人费解.

  • 在System.Data.SQLite.2012项目中,项目中不包含任何文件,但所有源文件都存在于实际文件夹中.它们似乎包含在名为System.Data.SQLite.Files.targets的文件中的解决方案中.这对我来说是一个奇怪的设置.
  • 我将自定义函数添加到项目文件夹中,但没有将它们包含在项目中,就像所有其他文件一样.然后我将它们添加到System.Data.SQLite.Files.targets中.
  • 我构建了解决方案,它们确实出现在程序集中.虽然我似乎可以将文件添加到程序集和构建中,但修改现有代码似乎没有任何影响.
  • 我进入了SQLiteConnection类并在Open方法中添加了一个新的Exception,我在关键位置添加了Console.Writeline,我在现有代码中修改的任何东西似乎都没有进入已编译的程序集.

这样做的目的是尝试将我的自定义函数构建到System.Data.SQLite.dll中,而不是依赖于通过反射自动加载.

c# sqlite system.data.sqlite linq-to-sql

12
推荐指数
1
解决办法
5676
查看次数

C#中的Sqlite与REGEXP

我正在尝试构建一个搜索查询,以匹配Windows上的SQLite和C#中的整个单词.当我运行这样的查询时:

SELECT a, b FROM Events WHERE c REGEXP @SearchString;
Run Code Online (Sandbox Code Playgroud)

然后:

cmd.Parameters.Add(new SQLiteParameter("@SearchString", 
"%[^a-zA-Z0-9]" + searchdata.SearchText + "[^a-zA-Z0-9]%"));
Run Code Online (Sandbox Code Playgroud)

当我打电话给:

var r = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

我得到REGEXP没有这样的功能.我想知道如何激活REGEXP支持和CASE SENSITIVE搜索.

c# regex sqlite

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

将自定义sqlite函数添加到Qt应用程序

我正在尝试将自定义sqlite3 regexp函数添加到我的Qt应用程序中(按照此答案的建议).但是一旦我调用该sqlite3_create_function函数,我就会收到消息.The program has unexpectedly finished.当我调试时,它会终止分段错误sqlite3_mutex_enter.下面有一个MWE,对绝对文件路径道歉.

regexp我的代码中的实现来自这个站点 ; 它也失败了这里msign功能.各种检查直接来自Qt文档.driver()->handle()

顺便说一下,我曾经select sqlite_version();确定Qt 5.5使用的是sqlite版本3.8.8.2.我通过查看Qt GitHub存储库中的旧提交找到了该版本.

MWE.pro

QT       += core gui
TARGET = MWE
TEMPLATE = app
QT += sql
SOURCES += main.cpp \
    D:\Qt\Qt5.5.0\5.5\Src\3rdparty\sqlite\sqlite3.c

HEADERS  += D:\Qt\Qt5.5.0\5.5\Src\3rdparty\sqlite\sqlite3.h
Run Code Online (Sandbox Code Playgroud)

main.cpp中

#include <QtSql>

#include "D:/Qt/Qt5.5.0/5.5/Src/3rdparty/sqlite/sqlite3.h"

void qtregexp(sqlite3_context* ctx, int argc, sqlite3_value** argv)
{
    QRegExp regex;
    QString str1((const char*)sqlite3_value_text(argv[0]));
    QString str2((const char*)sqlite3_value_text(argv[1]));

    regex.setPattern(str1);
    regex.setCaseSensitivity(Qt::CaseInsensitive);

    bool b …
Run Code Online (Sandbox Code Playgroud)

sqlite qt

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

返回第一个字符为非alpha的行

我正在尝试检索所有以SQlite中的任何非字母字符开头的列,但似乎无法使其正常工作.我目前有这个代码,但它返回每一行:

SELECT * FROM TestTable WHERE TestNames NOT LIKE '[A-z]%'
Run Code Online (Sandbox Code Playgroud)

有没有办法检索TestNames的第一个字符不属于字母表的所有行?

sql sqlite alphanumeric sql-like

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

如何让sqlite3在Tcl中执行regexp

我想在我的Tcl项目中包含regexp但是当我运行我的代码时出现此错误:

没有这样的功能:REGEXP

我的代码看起来像这样:

return [brain eval "select * from bad WHERE input REGEXP '^(.){0}_'"]
Run Code Online (Sandbox Code Playgroud)

我可以在数据库中测试这个确切的代码(我使用BD浏览器访问SQLite来浏览数据库)并且它可以正常工作:

select * from uniq WHERE input REGEXP '^(.){1}0'
Run Code Online (Sandbox Code Playgroud)

20行返回:select*from uniq WHERE输入REGEXP'^(.){1} 0'(耗时18ms)

因此REGEXP将在浏览器中工作,但不在我的Tcl脚本中.这是我到目前为止在这个问题上发现的:

  1. 其他人在ruby中遇到同样的问题:如何在SQLite3和Rails 3.1中打开REGEXP?
  2. Somone在iOS中遇到了同样的问题,不得不在iOS 上的sqlite3中使用 cretae_sqlite_function "没有这样的功能:REGEXP"
  3. 如何在sqlite中编写函数:https://www.sqlite.org/c3ref/create_function.html
  4. 如何在Tcl中编写sqlite函数:https: //www.sqlite.org/tclsqlite.html
  5. 我可能要用ruby编写的函数示例:https: //github.com/sei-mi/sqlite3_ar_regexp/blob/master/lib/sqlite3_ar_regexp/extension.rb
  6. 默认情况下未定义REGEXP用户功能:http: //www.sqlite.org/lang_expr.html#regexp
  7. REGEXP用户定义函数的PHP示例: 如何在SQLite查询中使用正则表达式?

所以我得出的结论是,我必须自己编写某种函数才能使其工作,但我不知道该函数的外观是什么.它只是简单地传递我对sqlite3的正则表达式吗?或者是否将正则表达式转换为其他内容然后传递给它?

该功能看起来像这样吗?

file mkdir db
sqlite3 db ./brain/brain.sqlite -create true

db eval { create_function('regexp', 2) do |func, pattern, expression|
            func.result = expression.to_s.match(
            Regexp.new(pattern.to_s, Regexp::IGNORECASE)) ? 1 : …
Run Code Online (Sandbox Code Playgroud)

regex sqlite tcl

4
推荐指数
1
解决办法
583
查看次数

Python SQLite SELECT LIKE IN [列表]

如何在Python中编写SQL查询来选择Python列表中的元素?

例如,我有 Python 字符串列表

Names=['name_1','name_2',..., 'name_n']
Run Code Online (Sandbox Code Playgroud)

和 SQLite_table。

我的任务是找到最短路线

SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_1%'
SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_2%'
...
SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_n%'
Run Code Online (Sandbox Code Playgroud)

python sqlite

3
推荐指数
1
解决办法
5677
查看次数

从sql中的关键字后面的文本中提取字符串?

我有必要从关键字后面的SQL字段中的文本中提取内容.例如,如果我在表中有一个名为description的字段,那么该字段的表内容是:

描述

asdasf关键字狗

aeee关键字猫

ffffaa关键字狼

我想在"关键字"之后提取并保存文本(在这种情况下是狗,猫和狼)并将其保存在视图中或只是用选择显示它.谢谢.

sql sqlite

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

SQLite 在 WHERE LIKE 中的多个条件

无论如何在不使用 OR 的情况下在 WHERE x LIKE %x% 语句中有多个条件?

基本上我希望能够选择一些东西,其中 column1 LIKE %something% AND column2 LIKE %check1% OR %check2% OR %check3%

但是,使用 OR 删除了我之前对 column1 的第一次检查,但我需要将其保留在原位

这是我目前正在使用的......但我想知道是否有更好的方法来做到这一点,所以我不必继续重复 column1

SELECT id FROM test WHERE 
column1 LIKE '%bob%' AND column2 LIKE '%something%' 
OR column1 LIKE '%bob%' AND column2 LIKE '%somethingdifferent%' 
OR column1 LIKE '%bob%' AND column2 LIKE '%somethingdifferent2%'
Run Code Online (Sandbox Code Playgroud)

基本上..现在我不得不重复

column1 LIKE %bob%' AND .........
Run Code Online (Sandbox Code Playgroud)

只是想知道是否有更好的方法来实现这一目标?

python database sqlite

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