SQL正确混合大小写的大写和小写

时间:2018-08-09 06:38:12

标签: sql sql-server string

我有一个数据库,其中有很多文本都用大写字母表示,现在应该转换为普通的小写/大写形式。例如,这适用于技术性的东西

CIRCUIT BREAKER(D)480Y/277VAC,1.5A,2POL

这应该写为circuit breaker(D)480Y/277VAC,1.5A,2POL

我认为唯一的方法是拥有正确拼写的单词列表,然后执行“搜索并替换”之类的操作。

有人可以给我一个在MS SQL中解决此问题的线索吗?

2 个答案:

答案 0 :(得分:1)

您可以做两件事之一-

  1. 编写一个简单的脚本(使用您喜欢的任何一种语言-例如php,perl,python等),该脚本都会从数据库中读取列,进行大小写转换并将值更新回数据库中

    • 这样做的好处是您将拥有更大的灵活性,并可以控制要修改的内容和操作方式。
    • 为使此解决方案有效,您可能需要在脚本中维护字典/哈希,并具有从大写到小写的关键字映射。
  2. 如果您不希望编写单独的脚本,第二种可能的解决方案是创建一个SQL函数,该函数读取需要更新的相应行/列,执行大小写转换和将其写/更新回数据库。

    • 这可能效率不高,具体取决于您实现该功能的方式。但这消除了为您编写另一个脚本的依赖。
    • 为使此解决方案有效,您可能需要维护另一个表,该表具有从大写到小写的关键字映射。

无论您对哪种方式比较满意。

答案 1 :(得分:0)

为字典创建映射表。它可以是会话中的临时表。使用值加载表,并使用此临时表进行更新。如果您希望将其作为永久的解决方案来处理传入的新行,则可以使用永久表。

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');

使用#tableForUpdate在TSQL中使用WhileLoop对UPDATE进行#dictionaryMap