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