如何限制 Oracle 中 varchar 列的 select 语句的输出?

Posted

技术标签:

【中文标题】如何限制 Oracle 中 varchar 列的 select 语句的输出?【英文标题】:How can i limit the output of select statement for a varchar column in Oracle? 【发布时间】:2015-08-20 17:07:47 【问题描述】:

我有一个表,其中存储了我所有产品的信息(产品 ID 和描述),描述列的类型为 VarChar2(200)。我想在 select 语句中格式化此列的输出,以仅生成输出字符串的特定部分。 E.G 这是我的简单选择语句:

Select PRODUCTId, PRODUCT_DESC From ProductTable Order By PRODUCTId Desc;

这个语句导致我的输出为:

ProductId            Product_Desc
1                    Oxford English-Oxford-Oxford Press-Textbook

现在我只想要 product_description 列的输出结果的特定部分。我已经检查了 Trim() 函数,但这对我没有帮助。有人可以帮我吗?

【问题讨论】:

您在寻找哪个“特定部分”?你想在空间上分割并取某个部分吗? 你是说你有四个(总是四个?)连字符分隔的元素,你想把它们分开;并提取一个特定的部分?您能否编辑您的问题以更详细地解释您的需求,提供更多示例值和预期输出? 【参考方案1】:

子字符串函数可能会有所帮助。

SELECT SUBSTR('ABCDEFG',3,4) "Substring" FROM DUAL;

【讨论】:

【参考方案2】:

您可以使用SUBSTR() 函数。您可以为product_desc 列提供开始和结束位置。

查询应该是这样的:

Select product_id,substr(product_desc,2,4) from producttable;

在这里,您将从第二个字符中获得 4 个字符。

【讨论】:

但是如果我想根据字符串中的某个字符将字符串修剪到特定位置怎么办,例如。修剪到字符等于“-”这个符号的地方? 是的,你可以使用 substr(trim(product_desc,'-'),startingposition,endingposition) @user3743778 - 这不是修剪的有效语法;你需要trim('-' from PRODUCT_DESC)。但它只会在字符串以连字符开头或结尾时执行任何操作,它不会删除示例中直到第一个连字符的所有内容,例如,您需要带有instr 或正则表达式的东西。不过,目前尚不清楚 OP 真正需要什么。

以上是关于如何限制 Oracle 中 varchar 列的 select 语句的输出?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle - 如何使用 varchar 类型创建自动增量列?

表的循环列的Oracle结构

Oracle 19c对VARCHAR2的限制

Oracle 19c对VARCHAR2的限制

oracle varchar到数字

Oracle 中 varchar2 PL/SQL 子程序参数的大小限制是多少?