MySql,使用类似%str%的搜索

MySql,使用类似%str%的搜索,mysql,Mysql,我使用查询包含LIKE子句%str%搜索我的表 这里有没有一种方法可以知道字符串“str”在句子中的位置 我想打印“str”作为标记(粗体) 为此,我需要确切的“str”在任何包含“str”的行中的起始位置的信息。当然,您需要。 您也可以在where子句中使用它,尽管您希望比较它和LIKE之间的性能 SELECT INSTR(`field`, 'str') FROM `table` WHERE 0 < INSTR(`field`, 'str') 从'table'中选择INSTR('fie

我使用查询包含LIKE子句%str%搜索我的表

这里有没有一种方法可以知道字符串“str”在句子中的位置

我想打印“str”作为标记(粗体)

为此,我需要确切的“str”在任何包含“str”的行中的起始位置的信息。

当然,您需要。 您也可以在where子句中使用它,尽管您希望比较它和LIKE之间的性能

SELECT INSTR(`field`, 'str') FROM `table` WHERE 0 < INSTR(`field`, 'str')
从'table'中选择INSTR('field','str'),其中0
记住INSTR()返回一个基于1的索引,即第一个字符是位置1,而不是位置0;将0保存为“未找到”。

当然,您需要。 您也可以在where子句中使用它,尽管您希望比较它和LIKE之间的性能

SELECT INSTR(`field`, 'str') FROM `table` WHERE 0 < INSTR(`field`, 'str')
从'table'中选择INSTR('field','str'),其中0

记住INSTR()返回一个基于1的索引,即第一个字符是位置1,而不是位置0;将0保存为“未找到”。

您可以使用position函数()获取字符串位置,但这可能不是最好的方法,因为如果他们多次使用标记,它将只返回第一个位置。只需将字符串替换为用所需标记包装的字符串就更容易了

如果您想要一个全MySQL解决方案,这可能会奏效:

SELECT REPLACE(exampleTable.field, 'search_string', '<b>search_string</b>')
FROM exampleTable
WHERE exampleTable.field LIKE '%search_string%';
选择替换(exampleTable.field,'search\u string','search\u string')
从示例表
其中exampleTable.field类似于“%search_string%”;

不过,我建议在PHP/ASP端进行类似的替换。。。使用相应语言中的字符串替换工具

您可以使用position函数()获取字符串位置,但是这可能不是最好的方法,因为如果他们多次使用标记,它将只返回第一个位置。只需将字符串替换为用所需标记包装的字符串就更容易了

如果您想要一个全MySQL解决方案,这可能会奏效:

SELECT REPLACE(exampleTable.field, 'search_string', '<b>search_string</b>')
FROM exampleTable
WHERE exampleTable.field LIKE '%search_string%';
选择替换(exampleTable.field,'search\u string','search\u string')
从示例表
其中exampleTable.field类似于“%search_string%”;

不过,我建议在PHP/ASP端进行类似的替换。。。使用相应语言中的字符串替换工具

塔尼·雅克拉斯卡。从invlista中选择DTBL_ID、mjj、kolic、prodano、name、sb、prodajnac,其中名称类似“%max%”按名称排序。这正是我已经提出的问题。在这个例子中,我想在“name”列中加粗“max”。你的建议看起来很有趣。它可以应用于描述的情况和方法吗?忘了说,我在Ubuntu上使用C语言。是的,我找到了如何实现它:从“…,它是有效的!现在,只剩下一个问题了。”Str'区分大小写。如何使其不区分大小写?默认情况下,MySQL不支持不区分大小写的字符串替换。请参阅此链接,了解您可以添加的自定义函数。不过,这也是我建议在脚本语言(PHP/ASP/PERL等)而不是MySQL中进行字符串替换的原因。其他语言有更强大的字符串工具,可以轻松处理此问题。我现在明白了。我想更换MySql可能会浪费时间。另外,我使用C,我的MySql字符串是utf8,所以替换utf8字符串也有问题。谢谢你的帮助,我还是会看看该怎么办。从invlista中选择DTBL_ID、mjj、kolic、prodano、name、sb、prodajnac,其中名称类似“%max%”按名称排序。这正是我已经提出的问题。在这个例子中,我想在“name”列中加粗“max”。你的建议看起来很有趣。它可以应用于描述的情况和方法吗?忘了说,我在Ubuntu上使用C语言。是的,我找到了如何实现它:从“…,它是有效的!现在,只剩下一个问题了。”Str'区分大小写。如何使其不区分大小写?默认情况下,MySQL不支持不区分大小写的字符串替换。请参阅此链接,了解您可以添加的自定义函数。不过,这也是我建议在脚本语言(PHP/ASP/PERL等)而不是MySQL中进行字符串替换的原因。其他语言有更强大的字符串工具,可以轻松处理此问题。我现在明白了。我想更换MySql可能会浪费时间。另外,我使用C,我的MySql字符串是utf8,所以替换utf8字符串也有问题。谢谢你的帮助,我还是会看看该怎么办。谢谢你的建议。我已经有了查询和查询结果。我可以将此合并到我现有的查询中吗?谢谢你的建议。我已经有了查询和查询结果。我可以将其合并到现有查询中吗?