Select 特定数值仅在字符串中

Select specific numeric value only in string

当我从数据库中提取字符串时,我需要在字符串中隔离数值,字符串通常看起来像 "blah.blah_123"。

我需要 select 所有包含 fx 的字段。最后是 1 而不是 10, 100, 123.

这是我查询的一部分:

SELECT `table1`.`shipping_code`
FROM `table2`
  INNER JOIN `table1` ON `table1`.`id` = `table2`.`id`
WHERE `table1`.`shipping_code` LIKE '%3%'

由于 _ 是一个 LIKE 通配符,因此需要对其进行转义:

SELECT `table1`.`shipping_code`
FROM `table2`
  INNER JOIN `table1` ON `table1`.`id` = `table2`.`id`
WHERE `table1`.`shipping_code` LIKE '%#_1' escape '#'

也许 MySQL 有一个默认的转义字符?我的答案(或多或少)符合 ANSI SQL,但它也应该与 MySQL 一起使用。

这个?

SELECT * 来自 table WHERE column REGEXP '1$'

但如果您的模式很容易隔离,则正则表达式可能存在性能问题,请按照 jarlh 的建议使用 LIKE 运算符。也许如果这对您有用,最好从要匹配的模式中排除“_”...

SELECT * 来自 table 其中 column 喜欢 %1

试试这个

SELECT REGEXP_SUBSTR ('abcde_1001001', '[[:digit:]]+1$|[^10|100|123]$') 来自双;