2015-09-07 190 views
0

列中删除字符需要删除与这些字符结尾的列中的值:“* 8”的PostgreSQL从的endsWith

我发现他们:

SELECT 
     "PIPPO" 
    FROM 
     "PLUTO" 
    WHERE 
    "PIPPO" LIKE '%*8' 

有一个简单的到的方法删除那些用查询结束字符?

+1

您可以使用replace(PIPPO, '* 8', '') –

+0

@MukeshKalgude什么用列 '* 8' 在字符串的中间? – Patrick

回答

1
UPDATE "PLUTO" 
SET "PIPPO" = left("PIPPO", -2) 
WHERE right("PIPPO", 2) = '*8'; 

left() and right() functions从输入字符串返回子字符串。使用负长度值会返回“除了所有内容”,因此对于'qwerty * 8'值为'qwerty'且right("PIPPO", 2)产生'* 8'。请注意,除了表达式的索引之外,这将比使用LIKE运算符更快。

0

您可以使用正则表达式替换。它很强大。

update test 
set name = regexp_replace(name, '8$', ''); 

Click to View Test Script

+0

Regular Exp中的'$'表示一行的结尾。所以'8 $'匹配字符串和结尾'8'。 – Atvoid