mysql - substring_index 不采用精确的前缀

标签 mysql select substring

我有一个包含字符串的表。其中一些以 https:// 开头,有些以 http:// 开头。我想提取那些以 http:// 开头的内容(不带 s)。请注意,我不想使用 LIKE 语句,因为我处理此字符串的计划存在另一个冲突。因此,如果我在 mytable 中名为 mycol 的列中有以下项目:

https://111.com/
https://www.222.com/en-gb/

我提出这个查询:

SELECT `mytable`.`mycol`, substring_index(`mytable`.`mycol`,'http://',-1)

我仍然在结果中得到这些字符串:

https://111.com/
https://www.222.com/en-gb/
为什么?由于我的查询正在查找 http:// 而不是 https://,为什么我得到的结果以 https:// 开头?在这个简单的示例中,它应该不返回任何内容,因为没有以 http://

开头的字符串

想要提取字符串

最佳答案

使用正则表达式。更简单。

从 mytable 中选择 mycol,其中 mycol REGEXP '^ http://.+ ';

关于mysql - substring_index 不采用精确的前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55663781/

相关文章:

mysql - 字符串截断长度,但不允许切碎单词

mysql - 错误 : "could not initailize master info structure" while doing Master Slave Replication in MySQL

mysql - 如何从表格 : Laravel 5. 8 更新 mysql 表行

mysql - SQL - 用联合重复一行

java - 使用正则表达式替换子字符串

java - 可以使用正则表达式来获取子字符串吗?

mysql 在选择中选择不同的

带连接的 mysql 查询重复结果

performance - 防止 OpenJPA N+1 在 map 上选择性能问题

sql-server - T-SQL COALESCE GROUPING 将 SETS 组合成没有 NULL 重复项的单列