我有一个带邮政编码的大表,但它们的格式很长,如:06608-1405
我需要的是删除连字符和连字符后面的数字。我之前使用过MYSQL REPLACE但不确定如何使用通配符。
为你节省时间。
Ĵ
答案 0 :(得分:2)
如何使用SUBSTRING_INDEX:
select SUBSTRING_INDEX(ZIP, '-', 1);
编辑:
更新表格:
Update <table-name> set ZIP = SUBSTRING_INDEX(ZIP, '-', 1);
答案 1 :(得分:0)
如果连字符前面的数字长度都相同(5),你可以SUBSTRING(zip, 0, 5)
甚至是SUBSTRING(zip, 0, LOCATE('-', zip))
或LEFT(zip, LOCATE('-', zip))
如果您想要遵循其他建议。
答案 2 :(得分:0)
使用left()instr()函数的组合
http://dev.mysql.com/doc/refman/5.1/en/string-functions.html
即
select left('12345-6789', instr('12345-6789', '-') - 1)
返回
12345
(如果instr()返回非零值,则可以/应该被优化为仅执行left()操作。)
编辑:删除连字符等使用:
update my_table
set my_col = left(my_col, instr(my_col, '-') - 1)
答案 3 :(得分:0)
如果他们都是邮政编码(即5位数,连字符,4位数),您可以使用:
mysql> SELECT LEFT(table.zip_code, 5); // (06608-1405 -> 06608)
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_left