仅在字符串中选择特定数值

时间:2015-12-03 08:31:41

标签: php mysql sql mysqli sql-like

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

我需要选择包含fx的所有字段。最后1但不是10,100,123。

以下是我的查询的一部分:

public int hashcode {
    int hash = field1.hashcode();
    hash = hash*31 + field2.hashcode(); //note the prime 31
    hash = hash*31 + field3.hashcode();
    return hash;
}

3 个答案:

答案 0 :(得分:2)

由于_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。

答案 1 :(得分:0)

这个?

SELECT * FROM table WHERE column REGEXP' 1 $'

但也许regexp有性能问题,如果您的patern很容易隔离,使用jarlh建议的LIKE运算符。也许如果这对你有用,最好排除" _"从模式来匹配...

SELECT * FROM table WHERE column LIKE%1

答案 2 :(得分:0)

试试这个

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