我正在使用Oracle数据库将HTML存储为Long数据类型.我想查询数据库以搜索存储在Long中的HTML数据中的特定字符串.
我试过,"从表中选择*,其中COLUMN喜欢'%form%'".这会导致以下Oracle错误,因为Long数据类型不支持"like".
ORA-00932:不一致的数据类型:预期NUMBER变长
我试图LIKE在LINQ to Objects中模拟运算符.这是我的代码:
List<string> list = new List<string>();
list.Add("line one");
list.Add("line two");
list.Add("line three");
list.Add("line four");
list.Add("line five");
list.Add("line six");
list.Add("line seven");
list.Add("line eight");
list.Add("line nine");
list.Add("line ten");
string pattern = "%ine%e";
var res = from i in list
where System.Data.Linq.SqlClient.SqlMethods.Like(i, pattern)
select i;
Run Code Online (Sandbox Code Playgroud)
它没有得到我的结果,因为System.Data.Linq.SqlClient.SqlMethods.Like它只是为了翻译成SQL.
LIKE在LINQ to Objects世界中是否存在类似于sql 运算符的东西?
我想知道查询的性能如何使用LIKE关键字和通配符作为与没有where子句的值相比较.
考虑一个where子句,例如"WHERE a LIKE'%'".这将匹配列'a'的所有可能值.这与没有where子句相比如何.
我问这个的原因是我有一个应用程序,其中有一些字段,用户可以指定要搜索的值.在某些情况下,用户希望获得所有可能的结果.我目前正在使用这样的单个查询:
SELECT * FROM TableName WHERE a LIKE ? AND b LIKE ?
Run Code Online (Sandbox Code Playgroud)
可以提供'%'和'%'的值以匹配a和or b的所有可能值.这很方便,因为我可以在我的应用程序中使用单个命名查询.我想知道性能考虑因素是什么.查询优化器是否会将LIKE'%'简化为全部匹配?我意识到因为我正在使用命名查询(预备语句),这也可能影响答案.我意识到答案可能是数据库特定的.具体来说,这将如何在Oracle,MS SQL Server和Derby中发挥作用.
另一种方法是根据用户输入通配符使用3个单独的查询.
A是通配符查询:
SELECT * FROM TableName WHERE b LIKE ?
Run Code Online (Sandbox Code Playgroud)
B是通配符查询:
SELECT * FROM TableName WHERE a LIKE ?
Run Code Online (Sandbox Code Playgroud)
A和B是通配符:
SELECT * FROM TableName
Run Code Online (Sandbox Code Playgroud)
没有通配符:
SELECT * FROM TableName WHERE a LIKE ? AND b LIKE ?
Run Code Online (Sandbox Code Playgroud)
显然,单个查询是最简单和最容易维护的.如果性能仍然良好,我宁愿只使用一个查询.
我一直在使用Access密钥术语LIKE和它的使用.我想在查询表单中使用以下RegEx(正则表达式)作为一种"验证规则",其中LIKE运算符过滤我的结果:
"^[0]{1}[0-9]{8,9}$"
Run Code Online (Sandbox Code Playgroud)
如何实现这一目标?
我的开发数据库是SQLite,但我将我的应用程序部署到Heroku,他们正在使用PostgreSQL.
现在,如果我执行搜索,有时会出现两个不同的结果,因为PostgreSQL区分大小写,但SQLite不是.
Rails不应该标准化这些东西吗?我应该用什么方法来解决这个问题?
我在MySQL 5.0.88上使用utf8 charset和utf8_unicode_ci collation运行以下select语句:
SELECT * FROM table WHERE surname = 'abcß';
+----+-------------------+------+
| id | forename | surname |
+----+-------------------+------+
| 1 | a | abcß |
| 2 | b | abcss |
+----+-------------+------------+
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM table WHERE surname LIKE 'abcß';
+----+-------------------+------+
| id | forename | surname |
+----+-------------------+------+
| 1 | a | abcß |
+----+-------------+------------+
Run Code Online (Sandbox Code Playgroud)
根据http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-sets.html德国特殊字符ß= ss表示utf8_unicode_ci,但为什么它只适用于"="运算符和不喜欢?我有一个电话簿应用程序,我迫切需要两个一起工作.
我的表中有一个bigint(ProductSerial)类型的列.我需要使用like运算符通过Product serial过滤表.但我发现,像运算符一样不能用于整数类型.
有没有其他方法(我不想使用=运算符).
如何选择并不显示重复项?实际上,它显示的是:apple | 苹果| 苹果| 苹果
这是我的代码:
$search = $_GET['q'];
$query = "SELECT * FROM query WHERE searchquery LIKE '%$search%' AND searchquery <> '$search'";
Run Code Online (Sandbox Code Playgroud) 为什么以下评估为True?
Dim result = "b" Like "*a*b"
Run Code Online (Sandbox Code Playgroud)
谢谢.
编辑:
为了概括这一点,以下返回True:
"String1" Like "*AnyText1*AnyText2*AnyText???******????*String1"
Run Code Online (Sandbox Code Playgroud)
VBA正常工作,返回False.
PowerShell正常工作,返回False:
PS C:\Users\XXX> "b" -Like "*a*b"
False
Run Code Online (Sandbox Code Playgroud)
EDIT2:
错误报告的链接:https:
//connect.microsoft.com/VisualStudio/feedback/details/748415/a-bug-in-net-like-operator
我需要执行以下查询:
SELECT * FROM users WHERE ip LIKE '88.99.%';
Run Code Online (Sandbox Code Playgroud)
问题是inet数据类型似乎不支持通配符(至少不是我在前面的查询中使用它们的方式).
我想知道的是,在指定LIKE过滤器之前将字段转换为字符串是否是明智之举?(另一方面,即使方法本身有效,这可能会减慢整个查询的速度.)