问题标签 [varchar2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
397 浏览

oracle - 如何在 Oracle Varchar2 中存储字节,并将 ASCII 视为文本

如何将字节存储在 Varchar2 中,并在它是 ASCII 时将其“正常”视为文本?(就像在查询中一样)。

如果不可能,限制在哪里?

我知道该列是用字符集定义的,所以如果它是 ANSI,例如,我不能把什么样的 1 字节值放在那里?对于 1 字节字符集,是否有比 ANSI“更好”的解决方案?

0 投票
2 回答
8090 浏览

sql - 插入 CLOB 非常非常慢

'TinyString'与 VARCHAR2 相比,在将字符串(只是示例字符串)插入存储在行 CLOB 中时,我遇到了显着的性能下降。我的理解是,在启用了 STORAGE IN ROW 的情况下,将 < 4000 字节的数据存储到 CLOB 中时,数据的存储方式与 VARCHAR2 相同(除非它“溢出”4000 字节),并且性能不会显着下降。但是,我的基准测试程序* 表明将相同的数据插入 CLOB比插入 VARCHAR2慢 15 倍。

看看下面的代码:

我有许多表,每个表都有一个类似于下面的 COMPOUND TRIGGER:

在对 进行任何操作时target_table,上述触发器会将coll_events_hist类型中填充的数据存储到log_table中,其定义方式如下:

我的设置是:Windows 7 SP1,Oracle 11g

*我的基准测试程序迭代 10 次,每次迭代更新 target_table 上的 21k 行。

0 投票
1 回答
64 浏览

oracle - 删除插播字符

我正在寻找一些方法来删除 varchar2 中的 interpunction。这意味着我想从“Marián”中获得“Marian”,从“Černický”中获得“Cernicky”感谢您的任何帮助或建议 Ondrej

0 投票
2 回答
149 浏览

sql - 返回字符串中的单词

如果没有任何内容,如何返回 varchar2 数据类型中的第二个单词和空白?这个想法是在函数中使用函数。

0 投票
1 回答
2219 浏览

oracle - Oracle varchar2 到时区时间戳

我正在尝试将包含带时区的时间戳的 VARCHAR2 变量转换为 DATE 变量。我可以在没有时区的情况下转换时间戳,但是当我为时区添加逻辑时,我得到“ORA-01821:日期格式无法识别”。请看下面的代码:

0 投票
1 回答
1226 浏览

sql - 如何在 varchar2 字段上使用lead() 和 lag()?

Oracle 11g 到目前为止我在 SQL Fiddle 上的工作

我在 varchar2 列上使用了lead()lag()函数。使用以下规则,我想生成所需的结果。

  1. 如果 lag_val 为空,则 '('
  2. 如果 lag_val 与 set_a 相同,则 'and'
  3. 如果 lag_val != set_a 那么 'or'
  4. 如果lead_val 为空,那么')'

当我使用 nvl() 转换空值以便进行比较时,我得到“无效数字”。

期望的输出

0 投票
1 回答
4700 浏览

string - 实体框架和 Oracle:无法插入 VARCHAR2 > 1,999 个字符

我在 Oracle 表中创建了一个 4,000 个字符的 VARCHAR2 字段。我正在使用 LINQ to Entities with Visual Studio 2010、.NET Framework 4 和ODAC 11.2 Release 4 和 Oracle Developer Tools for Visual Studio (11.2.0.3.0)将字符串值插入到字段中。当我尝试插入大于 1,999 个字符的字符串值时,我得到以下内部异常:

Oracle.DataAccess.Client.OracleException

ORA-00932: 不一致的数据类型: 预期 - 得到 NCLOB

但是,使用 SQL Developer 时,我可以在字段中插入一个 4,000 个字符的字符串值,而不会出现任何问题。

有一个已知的 ODAC 错误源 #2),其中保存到 XMLTYPE 字段时有 2,000 个字符的限制,但我没有保存到 XMLTYPE 字段。我的 GAC 中有 Oracle.DataAccess 2.112.3.0,我考虑更新到上述 Oracle 软件的第 5 版 (11.2.0.3.20),但“Oracle Developer Tools for Visual Studio”似乎是唯一的组件从第 4 版更新,我相信“Oracle Data Provider for .NET 4”是需要更新的组件。在我的 .NET 项目中,System.Data.Entity 和 System.Data.OracleClient 都是运行时版本 4.0.30319。

无论如何,我只是想知道是否有其他人遇到过这个错误,如果是这样,是否找到了任何解决方案——除了上面链接的 Oracle 论坛线程中建议使用存储过程作为解决方法的解决方案。Google 告诉我,人们仅在使用 XMLTYPE 字段时才会遇到此错误,但我不能是唯一在使用 VARCHAR2 字段时遇到此错误的人,可以吗?

(FWIW,我也希望在上面链接的 Oracle 论坛帖子中以用户“997340”的身份收到对我的帖子的回复。如果我收到有用的回复,我一定会分享这方面的知识。)

编辑:如果有帮助,下面是我的代码中失败的两个块。我在对第一个块进行故障排除时创建了第二个块,只是为了看看是否有任何区别。在检查字符串值是否已插入(“if”语句)以及实际插入字符串值(“AddObject”语句)时,我得到了异常。

1:

2:

4月3日更新:

我能够跟踪从上面第一个代码块中的“if”语句发送到 Oracle 的 SQL。这里是:

不幸的是,与我合作的 DBA 没有为我提供“p_linq_0”参数的值,但如前所述,当它超过 1,999 个字符时,就会发生异常。(在跟踪这个 SQL 时,我传递了一个 4,000 个字符的字符串作为参数,当然发生了异常。)DBA 还提到了某些 SQL 客户端 - 例如 SQL Plus - 无法处理超过 2,000 个字符的 VARCHAR2 . 我没有完全遵循。是否使用 SQL此外,SQL Developer 或任何其他工具,Oracle 仍将查询 4,000 个字符的 VARCHAR2 字段。另外,我的幻数是 1,999 个字符;不是 2,000 个字符。DBA 是否可能意味着参数中可以包含多少个字符?更重要的是,当我在 SQL Developer 中执行此 SQL 并为参数输入一个 4,000 个字符的字符串时,它可以完美运行。所以我仍然对为什么它不能通过 LINQ to Entities 工作感到非常困惑。我还在我的程序中尝试了以下代码,以在“msg”变量中使用 4,000 个字符的字符串运行类似的查询,效果也很好:

现在,我仍然指责 ODAC 存在错误,因为它与 LINQ to Entities 相关......

0 投票
1 回答
528 浏览

oracle - 需要帮助以在单个邮件中获取整个文件,该邮件在 oracle PL/SQL 中大小为 4 mb

PL/SQL 过程中的以下代码检查字节大小,如果它超过 30000 字节,它会迭代数据并 为每 30000 字节(30 kb)发送邮件附件(通过多个邮件的 txt 文件)。
我需要在单个邮件中获取整个文件,该邮件在 oracle PL/SQL 中大小为 4 mb。

lv_message_tab 的数据类型是 varchar2(32767) 。我可以使用CLOB数据类型而不是 * Varchar2(32767), * 如果是,请建议如何使用。

提前一百万谢谢!!!


我通过将输入作为集合表来调用该过程,例如

程序

我只想将变量的数据存储到clob 数据类型pv_message的变量中。lv_message

如何存储 lv_message := pv_message(即集合数据类型为 CLOB 类型)。我已经尝试过使用 'to_clob()' 函数进行类型转换,lv_message = to_clob(pv_message)但它不起作用。

0 投票
1 回答
1112 浏览

oracle - oracle varchar max 低于指定值

我有一个包含 varchar2(4000) 列的表,在其中插入数据时遇到问题,例如:

当我跑

我可以看到一个大小为 2048 的 CHAR_LENGTH 列,但除此之外,我不知道为什么它会抢占自己?

CHARACTER_SET_NAME 是 CHAR_CS,但内容大多是 base64 编码的。任何线索如何克服这个问题?

问候

更新

这是完整的 user_tab_columns,抱歉缩进。

2048 标记来自 CHAR_LENGTH 列,CHAR_USED 为 C..

更新:设法获得初始 DDL

但我仍然不知道如何调整这个数字?对简单的更改表和设置 varchar2(3192 CHAR) 有帮助吗?

0 投票
1 回答
284 浏览

oracle - VarChar2 与 Char 的比较:oracle设置可以允许这样吗?

我只是一个简单的问题,看看我是如何为同一件事得到 2 个不同的结果的。我们有两个数据库,它们的结构完全相同。在这两种情况下,都有一个视图在 varchar2(10) 和 char(10) 之间进行比较,其中字段仅填充长度为 7 (+3 个空格用于 char 当然)。

当然,这在我们的结构中是有问题的,但这与我的问题不同。

一个数据库如何能够进行比较 (varchar2=char) 而另一个不能?是否有一些 Oracle 设置可以允许这样做。

感谢您的帮助,Grts,Maarten