从字符串中删除前划线

时间:2019-06-25 01:57:36

标签: sql postgresql

我有这个:

-asdfj-
-jhbjbhk---kjn
klsjdn-kad-.d-.--.-ask-n-
-sd-kasd-ksjd-nkasjd

我需要这个:

asdfj-
jhbjbhk---kjn
klsjdn-kad-.d-.--.-ask-n-
sd-kasd-ksjd-nkasjd

每当在字符串的第一位出现破折号时,我都希望将其删除,并且第二位的任何内容都应取代它(即第一位)。

2 个答案:

答案 0 :(得分:2)

您可以使用LTRIMTRIM字符串函数:

例如:

SELECT LTRIM(column_name, '-') FROM table_name;
SELECT TRIM(LEADING '-' FROM column_name) FROM table_name;

您可以找到带有示例数据的交互式代码:http://sqlfiddle.com/#!15/28e115/6

有关更多详细信息,请参见:

答案 1 :(得分:1)

您可以使用regexp_replace()

select regexp_replace(the_column, '^-', '')
from the_table;

正则表达式'^-'的意思是在字符串开头恰好一个-


如果要永久更改表中的数据,可以在UPDATE语句中使用它:

update the_table
    set the_column = regexp_replace(the_column, '^-', '');
where the_column ~ '^-';

where子句可确保仅在发生更改的地方更新那些行。