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]$')
来自双;
当我从数据库中提取字符串时,我需要在字符串中隔离数值,字符串通常看起来像 "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]$') 来自双;