查找和替换字符的想法

时间:2013-06-03 21:59:58

标签: mysql regex excel

如果有公寓号,我需要搜索地址字段并将一个字符更改为大写字母。所以'521 Main St.#3b'将改为'521 Main St.#3B'。

我知道这样做的方法是编写一个遍历记录集的程序,查看最后一个字符的地址字段以查看它是否为alpha,然后如果前面的字符是数字,则更改最后一个char的大小写并更新记录。

使用正则表达式(从未使用过)会更快/更简单吗? 如果是这样,这最好是在编程环境中使用,还是使用Textmate或vi等文本编辑器?数据在MySQL和Excel中,但我可以将其导出到文本文件。

感谢。

2 个答案:

答案 0 :(得分:3)

我使用TextMate解决了这个问题,一旦我开始理解一点正则表达式,就很简单了。 (详情请Regex Syntax for making the last character Uppercase in TextMate

不过,我想知道像sed或awk这样的东西(我开始试用)可能是一个更好的工具。而Olexa提供的SQL解决方案也适用。我只是不知道如何将它应用于整个记录集。

答案 1 :(得分:2)

如果数据存储在MySQL中,那么最好在那里处理:

UPDATE  addresses
  SET   address = CONCAT(LEFT(address, CHAR_LENGTH(address) - 1), UPPER(RIGHT(address, 1)))
  WHERE address REGEXP BINARY '#[[:digit:]]+[[:lower:]]{1}$'
;

我添加了BINARY,因为否则REGEXP不区分大小写,但可能需要省略BINARY以支持多字节字符串。在这种情况下,将进行剩余更新,但结果无论如何都是正确的。

P上。 S.关于SQL Fiddle的示例,显示哪些值受到影响,以及它们如何受到影响:http://sqlfiddle.com/#!2/b29326/1