特殊上标字符

时间:2013-08-28 09:51:22

标签: sql postgresql postgresql-9.1 superscript

如何在PostgreSQL中插入带有超级脚本字符的字符串?

我想插入“TM”作为字符串“RACH”的力量?我尝试了以下查询:

update contact SET name=E'RACH$^'TM where id='10782'

3 个答案:

答案 0 :(得分:2)

使用专用字符®或™作为商标标志。

UPDATE contact SET name = 'RACH™' WHERE id='10782'  -- '™' not 'ᵀᴹ'

其他一些字符(但不是全部!)在unicode中有上标变体,但许多字体不支持这些奇特的代码点,甚至不包含用于表示它们的字形。除了常见的¹²³之外,我通常不鼓励使用其中任何一种。您通常会使用格式来实现上标效果。

例如,在SO上,你可以使用: demo superscript ABC
这是<sup>demo superscript ABC</sup>的输出 有关Wikipedia page on superscript characters的更多信息。

如果您需要映射功能,请使用 translate() 。循环中的 replace()非常效率低下。

translate('TM', 'ABDEGHIJKLMNOPRTU', 'ᴬᴮᴰᴱᴳᴴᴵᴶᴷᴸᴹᴺᴼᴾᴿᵀᵁ');

答案 1 :(得分:0)

我不知道是否可以在不创建映射函数的情况下将符号转换为超级符号,但您可以手动编写它:

update contact SET name='RACHᵀᴹ' where id='10782'

sql fiddle demo

映射功能可能是这样的:

create or replace function superscript(data text)
returns text
as
$$
declare
   ss text[];
   lt text[];
begin
   ss := '{ᴬ,ᴮ,ᴰ,ᴱ,ᴳ,ᴴ,ᴵ,ᴶ,ᴷ,ᴸ,ᴹ,ᴺ,ᴼ,ᴾ,ᴿ,ᵀ,ᵁ}';
   lt := '{A,B,D,E,G,H,I,J,K,L,M,N,O,P,R,T,U}';
   for i in 1..array_length(ss, 1)
   loop
       data := replace(data, lt[i], ss[i]);
   end loop;
   return data;
end;
$$
language plpgsql;

sql fiddle demo

答案 2 :(得分:0)

在Word或LibreOffice Writer之类的文本编辑器中:

  • 使用特殊菜单部分插入所需的特殊符号。切勿在度数情况下使用高位索引来格式化数字-只需插入一个特殊符号即可。
  • 将其复制到剪贴板
  • 粘贴到数据库管理器的单元格中(Intellij的Data Grip或其他)。