使用 postgresql 删除表中整列中的部分数据

Removing parts of data in whole column in table using postgresql

提问人:Mycode 提问时间:8/3/2022 最后编辑:Mycode 更新时间:8/3/2022 访问量:52

问:

在我的数据中,我有如下所示的向后 p 符号。我找到了一种过滤方法,只得到这个符号。我发现这个符号代表一条新线。我试图消除符号后面的所有内容,但似乎可以做到。我尝试使用修剪函数,但它没有修剪任何东西,或者我用错了语法?

select trim(trailing E'([\\n\\r]+)|([\\n\\r]+$)' from ri.dish_type), ri.* from restaurant_items ri 
where restaurant_id  = 12340 and ri.dish_type ~ E'([\\n\\r]+)|([\\n\\r]+$)'

哪里是我过滤符号的方式。ri.dish_type ~ E'([\\n\\r]+)|([\\n\\r]+$)'

enter image description here

如何消除符号后面的所有文本?

更新

select split_part(ri.dish_type, E'\n\r', 1) from restaurant_items ri 
where restaurant_id  = 12340 and ri.dish_type ~ E'([\\n\\r]+)|([\\n\\r]+$)'

使用它会得到相同的结果

enter image description here

更新2

select split_part(ri.dish_type, E'\n', 1) from restaurant_items ri 
where restaurant_id  = 12340 and ri.dish_type ~ E'([\\n\\r]+)|([\\n\\r]+$)'

使用它并删除 \r 似乎可以让它工作。

感谢您的帮助!@Adrian 克拉弗

数据库 字符串 PostgreSQL 数据操作 修剪

评论

0赞 Adrian Klaver 8/3/2022
select split_part(E'test\n\rmoretext', E'\n\r', 1); test每个字符串函数
0赞 Mycode 8/3/2022
似乎不起作用
0赞 Adrian Klaver 8/3/2022
定义“似乎不起作用”。显示输入和输出。
0赞 Mycode 8/3/2022
对不起,我的意思是说我不太确定如何在我的代码中实现它。我需要执行此操作的列ri.dish_type使用 E'([\\n\\r]+)|([\\n\\r]+$)' 查找所有这些符号。
0赞 Adrian Klaver 8/3/2022
select split_part(ri.dish_type, E'\n\r', 1)

答:

0赞 Cetin Basoz 8/3/2022 #1

你可以保持简单,做这样的事情:

select
       case
           when strpos(dish_type, chr(13)) > 0
               then left(dish_type, strpos(dish_type, chr(13))-1)
           else dish_type
       end as dish_type
from  restaurant_items
where restaurant_id  = 12340;