我正在尝试搜索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) 我使用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.dll中,而不是依赖于通过反射自动加载.
我正在尝试构建一个搜索查询,以匹配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搜索.
我正在尝试将自定义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中的任何非字母字符开头的列,但似乎无法使其正常工作.我目前有这个代码,但它返回每一行:
SELECT * FROM TestTable WHERE TestNames NOT LIKE '[A-z]%'
Run Code Online (Sandbox Code Playgroud)
有没有办法检索TestNames的第一个字符不属于字母表的所有行?
我想在我的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脚本中.这是我到目前为止在这个问题上发现的:
所以我得出的结论是,我必须自己编写某种函数才能使其工作,但我不知道该函数的外观是什么.它只是简单地传递我对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) 如何在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) 我有必要从关键字后面的SQL字段中的文本中提取内容.例如,如果我在表中有一个名为description的字段,那么该字段的表内容是:
asdasf关键字狗
aeee关键字猫
ffffaa关键字狼
我想在"关键字"之后提取并保存文本(在这种情况下是狗,猫和狼)并将其保存在视图中或只是用选择显示它.谢谢.
无论如何在不使用 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)
只是想知道是否有更好的方法来实现这一目标?
sqlite ×9
c# ×2
python ×2
regex ×2
sql ×2
activerecord ×1
alphanumeric ×1
database ×1
expression ×1
linq-to-sql ×1
qt ×1
sql-like ×1
tcl ×1