Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何检测像“;帮帮我;?_Mysql_Sql_Sql Server_Postgresql - Fatal编程技术网

Mysql 如何检测像“;帮帮我;?

Mysql 如何检测像“;帮帮我;?,mysql,sql,sql-server,postgresql,Mysql,Sql,Sql Server,Postgresql,我有一个字典表(单词)和另一个表,其中包含两个单词,如“helpme”、“helloword”、“loveme” 我想把这张桌子改成“救命”、“你好”、“爱我” 我运行以下序列: SELECT table_concatened.twowords, t1.word as 'word1', t2.word as 'word2' FROM table_concatened JOIN dictionary_table AS t1 ON SUBSTRING(table_concaten

我有一个字典表(单词)和另一个表,其中包含两个单词,如“helpme”、“helloword”、“loveme”

我想把这张桌子改成“救命”、“你好”、“爱我”

我运行以下序列:

SELECT 
  table_concatened.twowords,
  t1.word as 'word1',
  t2.word as 'word2'
FROM
 table_concatened
  JOIN dictionary_table AS t1 ON SUBSTRING(table_concatened.twowords,1,len(t1.word)) = t1.word 
  JOIN dictionary_table AS t2 ON SUBSTRING(table_concatened.twowords,len(t1.word)+1,len(table_concatened.twowords)) = t2.word;
它正在工作,但我的桌子用了很长时间

如何优化我的sql序列

----表格示例--- 字典表

 |hello|
 |word |
 |love |
 |me   |
具体表格的示例:

|helloword|
|loveyou |
编辑: 1) 该用例用于自动更正。例如,在skype、iPhone、chrome上,当我键入“helloword”时,我会自动更正为“helloword”。
2) 这里的数据库不是很重要。我们的问题是关于算法逻辑和性能优化。

如果您不介意使用动态(如果是SQL Server)

返回

ID    Value
1     hello word  
2     love you 

如果您不介意使用动态(如果是SQL Server)

返回

ID    Value
1     hello word  
2     love you 

当您知道以后需要再次分离它们时,为什么要愚蠢地将它们合并为一个字符串?这永远让我感到惊讶。我存储数据的方式完全错误,现在我在使用它时遇到了问题。这很复杂/困难/太慢/不正常!有人能帮忙吗?答案是肯定的——首先修复数据,使其正确存储,然后使用它时所有这些问题都会消失。你不必在困难的事情一开始并不困难的时候就对它们进行优化,而且你不可能同时使用SQL Server、PostgreSQL和MySQL。为实际使用的单个DBMS添加标记,而不是随机添加听起来熟悉的内容。这些数据库之间的语法和功能有很大的不同,了解您使用的特定数据库会使您得到的答案有所不同。请发布并删除不适用的标签。我知道您在使用SQL标记时得到一个建议,即您应该添加一个特定的DBMS标记,如MySQL、SQL Server等,但这意味着使用的是特定的DBMS标记。您的查询必然会很慢,因为
SUBSTRING()
测试无法使用索引进行优化。注意:我同意您最好正确设置表的格式,但是正如您当前的查询一样,它可以简化为
。。。t2在t1.word+t2.word=table_concated.两个单词
而不是使用子字符串。另外,
substring(x,1,…)
在功能上与
left(x,…)
相同,但无论如何,您都不能在此处使用索引。@e4c5:一点也不能。谢谢你先问我。:-)当您知道以后需要再次分离它们时,为什么要愚蠢地将它们合并为一个字符串?这永远让我感到惊讶。我存储数据的方式完全错误,现在我在使用它时遇到了问题。这很复杂/困难/太慢/不正常!有人能帮忙吗?答案是肯定的——首先修复数据,使其正确存储,然后使用它时所有这些问题都会消失。你不必在困难的事情一开始并不困难的时候就对它们进行优化,而且你不可能同时使用SQL Server、PostgreSQL和MySQL。为实际使用的单个DBMS添加标记,而不是随机添加听起来熟悉的内容。这些数据库之间的语法和功能有很大的不同,了解您使用的特定数据库会使您得到的答案有所不同。请发布并删除不适用的标签。我知道您在使用SQL标记时得到一个建议,即您应该添加一个特定的DBMS标记,如MySQL、SQL Server等,但这意味着使用的是特定的DBMS标记。您的查询必然会很慢,因为
SUBSTRING()
测试无法使用索引进行优化。注意:我同意您最好正确设置表的格式,但是正如您当前的查询一样,它可以简化为
。。。t2在t1.word+t2.word=table_concated.两个单词
而不是使用子字符串。另外,
substring(x,1,…)
在功能上与
left(x,…)
相同,但无论如何,您都不能在此处使用索引。@e4c5:一点也不能。谢谢你先问我。:-)@nicolasbahout很乐意帮忙。@nicolasbahout很乐意帮忙。