Coldfusion - 检查全部小写或大写

时间:2015-05-15 15:30:07

标签: regex ms-access

我被赋予了一项艰巨的任务,即筛选超过30,000名注册人的数据库,并在需要时更正姓名和地址的字母大小写。我正在尝试编写一个程序,它将在我们的数据库中搜索全部小写或全部大写的名称和地址,并在网页中输出这些错误,以便我更有效地查看和更正。我被告知我可以利用正则表达式查找符合我标准的字段,只是我是编程新手,而且我不熟悉RegEx的语法。

如果有人可以提供一些关于如何使用RegEx查询这些不一致的指示,我们将不胜感激。

谢谢。

2 个答案:

答案 0 :(得分:1)

strComp应该有效

SELECT col 
FROM table  
WHERE strComp(col, lcase(col), 0) = 0 --all lower case
  OR strComp(col, ucase(col), 0) = 0 --all upper case

前两个参数是要比较的列。第三个参数说要进行二进制比较。如果两个字符串相等则返回0。

答案 1 :(得分:0)

您如何准确更正数据?如果您看到姓氏" MACGUYVER"它应该改为Macguyver还是MacGuyver?如果你看到姓氏" DE LA HOYA"会变成德霍亚,德拉霍亚还是其他什么?这项任务似乎有点危险。

如果您的计划基本上只是初始化大写,那么我建议您在进行任何人工审核之前先运行更新。

您可以运行类似这样的内容,将您的姓名字段更改为首字母大写字母:

update yourTable
set lname = StrConv(lname,3)
where StrComp(lname, StrConv(lname,3), 0) <> 0
and StrComp(mid(lname,2,len(lname)), lcase(mid(lname,2,len(lname))), 0) = 0;

凡&#34; lname&#34;例如,上面是你的姓氏列。 必须为每个名称字段运行上述内容。

请注意,这不会更新合法拥有多个大写字母的名称,例如需要手动审核的MacGuyver或O&#39; Connor。 另请注意,更新以van,von,de la和其他可能故意为小写的其他名字开头的姓氏。

然后,您可以查询需要手动审核的名称,我认为这些名称将是一个小得多的子集:

select *
from yourTable
where StrComp(lname, StrConv(lname,3), 0) <> 0;

地址更加艰难。要找到全部小写或全部大写的,您可以这样做:

select *
from yourTable
where strComp(address1, lcase(address1), 0) = 0;

select *
from yourTable
where strComp(address1, ucase(address1), 0) = 0;

显然,这不会引起诸如&#34; 123 New YORK AveNUE&#34;

之类的地址线。

考虑要求允许将所有地址值设置为大写。
你可以省去很多麻烦。