我的表中有一个字段有文本数据类型.
以下两个sql查询的性能是否存在差异:
select * from tablename where fieldname="xyz%";
select * from tablename where fieldname="%zyx";
Run Code Online (Sandbox Code Playgroud)
如果我们要实现这些查询的执行,我认为我们需要这样做:
我们必须匹配两个正则表达式(xyz*和*zyx).
我们必须从头开始检查字符串字符.
对于第一个查询,我们必须读取前三个字符以查看是否存在匹配,但对于第二个字符,我们必须读取,直到我们得到字符串的结尾以确定匹配是否已经发生.但是如果我们将字符串的长度存储在某个地方,我们可以直接读取最后三个字符,从而提供与第一种情况类似的性能.
我的问题是,像mysql和oracle这样的商业数据库是否在执行查询时表现出任何差异.
维基百科定义了人们可以使用的许多可能的表情符号。我想将此列表与字符串中的单词匹配。我现在有这个:
$string = "Lorem ipsum :-) dolor :-| samet";
$emoticons = array(
'[HAPPY]' => array(' :-) ', ' :) ', ' :o) '), //etc...
'[SAD]' => array(' :-( ', ' :( ', ' :-| ')
);
foreach ($emoticons as $emotion => $icons) {
$string = str_replace($icons, " $emotion ", $string);
}
echo $string;
Run Code Online (Sandbox Code Playgroud)
输出:
Lorem ipsum [HAPPY] dolor [SAD] samet
Run Code Online (Sandbox Code Playgroud)
所以原则上这是有效的。但是,我有两个问题:
如您所见,我在数组中的每个表情符号周围放置了空格,例如 ':-) ' 而不是 ':-)' 在我看来,这使得数组的可读性降低。有没有办法在没有空格的情况下存储表情符号,但仍然与周围有空格的 $string 匹配?(和现在的代码一样高效?)
或者有没有办法将表情符号放在一个变量中,然后在空间上爆炸以检查 $string?就像是
$emoticons = array( '[HAPPY]' => ">:] :-) :) …
在Python中,set非常方便用于比较2个字符串列表(请参阅此链接).我想知道在性能方面是否有一个很好的C++解决方案.因为每个列表中有超过100万个字符串.
这是区分大小写的匹配.
我正在尝试采用这样的数组中的元素列表:
['GRADE', 'GRATE', 'GRAPE', /*About 1000 other entries here ...*/ ]
Run Code Online (Sandbox Code Playgroud)
并将它们与出现在Oracle数据库中的列中匹配的项匹配,例如:
1|'ANTERIOR'
2|'ANTEROGRADE'
3|'INGRATE'
4|'RETROGRADE'
5|'REIGN'
...|...
/*About 1,000,000 other entries here*/
Run Code Online (Sandbox Code Playgroud)
对于该G个单词数组中的每个条目,我想遍历Oracle数据库的word列,并尝试查找数组中每个条目的右侧匹配项。在此示例中,数据库中的条目2、3和4将全部匹配。
在任何其他编程语言中,它看起来都是这样的:
for entry in array:
for each in column:
if entry.right_match(each):
print entry
Run Code Online (Sandbox Code Playgroud)
如何在PL / SQL中执行此操作?
使用Lua模式匹配我希望能够解析一个字符串并找到以下URL
http://www.test.com/
www.test.com/
test.com/
test-test.test.com/
Run Code Online (Sandbox Code Playgroud)
斜杠可以是可选的,但如果包含它,它必须能够找到嵌套文件夹,例如:
test.com/test/
Run Code Online (Sandbox Code Playgroud)
这样我可以使用单个模式匹配来查找URL.问题是我使用的所有例子都不起作用或导致魔兽世界永远不会让加载屏幕出现我自己无法解决的错误.
我不再拥有我在代码中使用的模式,所以我可以使用一个可以工作的模式,而不是钩住不正确的URL.如果以后需要,我会提出一些.
我在长列表中的数千个名称的数据框中有一个列表。许多名称之间的差异很小,因此略有不同。我想找到一种匹配这些名称的方法。例如:
names <- c('jon smith','jon, smith','Jon Smith','jon smith et al','bob seger','bob, seger','bobby seger','bob seger jr.')
Run Code Online (Sandbox Code Playgroud)
我已经amatch在stringdist函数以及中进行了研究agrep,但是所有这些都需要一个主名称列表,用于与另一个名称列表进行匹配。就我而言,我没有这样的主列表,因此我想通过识别具有高度相似模式的姓名从数据中创建一个主列表,以便我可以查看它们并确定它们是否是同一个人(在很多情况下,的情况下)。我想要一个新列中的输出,可以帮助我知道这些是可能的匹配,也许是基于Levenshtein距离之类的某种相似性得分。也许是这样的:
names match SimilarityScore
1 jon smith a 9
2 jon, smith a 8
3 Jon Smith a 9
4 jon smith et al a 5
5 bob seger b 9
6 bob, seger b 8
7 bobby seger b 7
8 bob seger jr. b 5
Run Code Online (Sandbox Code Playgroud)
这样的事情可能吗?
我有一个非常简单的问题,但我的谷歌研究没有帮助..我对Lua很新,所以..
我将字符串"XXXX_YYYYYY_zzzzzz"存储在局部变量中,我想解析它并获得3个新的局部变量.我应该使用string.find吗?
local str_ = "XXXX_YYYYY_zzzzzz"
local first_, second_, third_ = strind.find(str_, "^(%w+)_(%w+)_(%w+)$")
Run Code Online (Sandbox Code Playgroud) 如何从 API 响应动态转换电话号码和电子邮件以隐藏非极端字符?
例如:
发票将发送至您的电子邮箱:n*****1@gmail.com
OTP 将发送到您的电话号码:7*****213
API 包含键:值,因此我将电话号码和电子邮件隔离,因此无需从更大的字符串中筛选它们。此外,电话号码始终为 10 位数字,我需要显示第一个和最后三个数字。
PS:我不擅长正则表达式 :(
我试图理解为什么 Rabin-Karp 算法的最坏情况运行时间是 O(nm) 而平均情况是 O(n+m)。
有人可以帮我吗?
我正在尝试(如果可能的话)获得Scala匹配/ case语句来为我执行内联正则表达式匹配.
具体来说,我有一个将运行a的方法,match如果方法的输入以字符串"fizz"开头,那么我希望match语句选择正确的大小写:
def animalToSound(animal : String) : String = {
animal match {
case "duck" => "quack"
case "lion" => "roar"
case "dog" => "woof"
case matchesFizzRegex(animal) => "heyo!"
case _ => "meow"
}
}
def matchesFizzRegex(animal : String) : ??? = {
val fizzRegex = "fizz*".r
if(fizzRegex.match(animal)) {
???
} else {
???
}
}
Run Code Online (Sandbox Code Playgroud)
所以,如果我打电话animalToSound("fizzBuzz"),那么期望的行为是:
有什么想法,我怎么能正常工作?
string-matching ×10
performance ×3
regex ×3
lua ×2
lua-patterns ×2
oracle ×2
agrep ×1
algorithm ×1
big-o ×1
bigdata ×1
c++ ×1
javascript ×1
jquery ×1
mysql ×1
php ×1
plsql ×1
r ×1
rabin-karp ×1
scala ×1
sql ×1
string ×1
suffix-tree ×1
url ×1