db2函数将重写字符的小写字母转换为大写字母

时间:2014-08-04 13:34:29

标签: sql db2

我需要在DB2表中将名字的所有字符转换为大写字母。我正在使用上层函数,但遇到了一个处理重音字符的问题。例如,我需要'é'成为'É'。上层函数似乎忽略了这些重音字符。我找不到与此有关的任何事情都没有运气。有什么建议吗?

1 个答案:

答案 0 :(得分:2)

DB2具有对区域设置敏感的UPPER函数:Link

>>-UPPER--(--string-expression--,--locale-name--+---------------+--+--------------------+--)-><
                                                '-,--code-units-'  '-,--+-CODEUNITS16-+-'      
                                                                        +-CODEUNITS32-+        
                                                                        '-OCTETS------'        

如果这对您不起作用,您可以创建自己的功能:

CREATE OR REPLACE FUNCTION UPPER_CASE(
  IN STRING VARCHAR(256)
  ) RETURN VARCHAR(256)
 UPPER_CASE: BEGIN
  -- Replaces á with Á
  SET STRING = REPLACE (STRING, u&'\00e1', u&'\00c1');
  -- Replaces é with É
  SET STRING = REPLACE (STRING, u&'\00e9', u&'\00c9');
  -- ...
  RETURN STRING;
 END UPPER_CASE @

我在我的个人博客中写了一篇关于使用不同整理顺序进行排序的文章。 article可以帮助您编写函数。