MySQL在连字符后替换数字

时间:2010-01-19 10:44:26

标签: mysql

我有一个带邮政编码的大表,但它们的格式很长,如:06608-1405

我需要的是删除连字符和连字符后面的数字。我之前使用过MYSQL REPLACE但不确定如何使用通配符。

为你节省时间。

Ĵ

4 个答案:

答案 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