2013-08-28 90 views
0

如何在PostgreSQL中插入帶有超級腳本字符的字符串?特殊上標字符

我想插入「TM」作爲字符串「RACH」的力量?我想下面的查詢:

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

回答

0

我不知道是否有可能符號supersripts轉換,而無需創建該映射功能,但你可以手動寫:

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

+0

這是很好的.. – Palaniraja

+0

這個功能不好。你可以使用'translate()'。 –

+0

謝謝你提到Erwin –

2

使用專用字符®或™作爲商標符號。

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

一些其他字符(但不是全部!)必須以Unicode標變種,但很多字體不支持這些外來代碼點,甚至不包括字形來表示它們。我會一般勸阻使用任何這些除了普通的¹²³。您通常會使用格式化來實現上標效果。

例如,在這裏的話,你可以使用:演示標ABC
這是對Wikipedia page on superscript characters<sup>demo superscript ABC</sup>
更多信息輸出。

如果你需要一個映射函數使用translate() replace()在循環中 將是非常低效的

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