SQL在混合文本中更正大小写
我有一个数据库,里面有很多都是大写字母的文本,现在应该转换成普通的小写/大写字母。例如,这适用于技术人员SQL在混合文本中更正大小写,sql,sql-server,string,Sql,Sql Server,String,我有一个数据库,里面有很多都是大写字母的文本,现在应该转换成普通的小写/大写字母。例如,这适用于技术人员 CIRCUIT BREAKER(D)480Y/277VAC,1.5A,2POL 应将其写入断路器(D)480Y/277VAC,1.5A,2POL 我认为唯一的方法是列出拼写正确的单词,然后进行搜索和替换 有人能给我一个在MS SQL中处理这个问题的线索吗?你可以做两件事中的一件- 编写一个简单的脚本(使用您喜欢的任何一种语言,如php、perl、python等),从数据库中读取列,进行大小
CIRCUIT BREAKER(D)480Y/277VAC,1.5A,2POL
应将其写入断路器(D)480Y/277VAC,1.5A,2POL
我认为唯一的方法是列出拼写正确的单词,然后进行搜索和替换
有人能给我一个在MS SQL中处理这个问题的线索吗?你可以做两件事中的一件-
- 这样做的好处是,您可以更灵活地控制要修改的内容和方式
- 要使此解决方案正常工作,您可能需要在脚本中维护一个dict/hash,具有大写到小写的关键字映射
- 这可能有点低效,具体取决于您如何实现该功能。但它消除了为您编写另一个脚本的依赖性
- 要使此解决方案起作用,您可能需要维护另一个具有大写到小写关键字映射的表
以您更熟悉的为准。为字典创建映射表。它可以是会话中的临时表。加载带有值的表,并使用此临时表进行更新。若您希望这是处理新行的永久解决方案,那个么就使用永久表
CREATE TABLE #dictionaryMap(sourceValue NVARCHAR(4000), targetValue NVARCHAR(4000));
CREATE TABLE #tableForUpdate(Term NVARCHAR(4000));
INSERT INTO #dictionaryMap
VALUES ('%BREAKER%','breaker'),('%CIRCUIT%','circuit');
INSERT INTO #tableForUpdate
VALUES ('CIRCUIT BREAKER(D)480Y/277VAC,1.5A,2POL');
使用TSQL中的WhileLoop,使用
#dictionaryMap
执行对#tableForUpdate
的更新,仅使用“(”之前的字符应更改为小写?您有两个选项:1)有一些模式可以识别单词的位置,2)有要替换的单词词典。根据什么基础应该是大写或小写。括号是偶然的。我认为有“BREAKER-->BREAKER”这样内容的词典就可以了。我只是想知道如何在SQL中应用这样的字典