如果有公寓号,我需要搜索地址字段并将一个字符更改为大写字母。所以'521 Main St.#3b'将改为'521 Main St.#3B'。
我知道这样做的方法是编写一个遍历记录集的程序,查看最后一个字符的地址字段以查看它是否为alpha,然后如果前面的字符是数字,则更改最后一个char的大小写并更新记录。
使用正则表达式(从未使用过)会更快/更简单吗? 如果是这样,这最好是在编程环境中使用,还是使用Textmate或vi等文本编辑器?数据在MySQL和Excel中,但我可以将其导出到文本文件。
感谢。
答案 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