Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 不应该';这个Oracle to_number函数不起作用吗?_Sql_Regex_Oracle_Oracle11g - Fatal编程技术网

Sql 不应该';这个Oracle to_number函数不起作用吗?

Sql 不应该';这个Oracle to_number函数不起作用吗?,sql,regex,oracle,oracle11g,Sql,Regex,Oracle,Oracle11g,我有点迷失在一个应该很琐碎的问题中。我检查了相关的问题,导致检查regexp拟合,他们这样做。我有一个4个字符长的varchar2,oracle不想将其转换为数字 我查了一下: select nyszamtxt from gyta_megjegyzes where REGEXP_LIKE (nyszamtxt, '[0-9][0-9][0-9][0-9]'); 它以varchar2形式返回预期的数字,而不是其他形式 很好,那么这应该很好,我想: select to_nu

我有点迷失在一个应该很琐碎的问题中。我检查了相关的问题,导致检查regexp拟合,他们这样做。我有一个4个字符长的varchar2,oracle不想将其转换为数字

我查了一下:

select 
  nyszamtxt 
  from gyta_megjegyzes 
  where REGEXP_LIKE (nyszamtxt, '[0-9][0-9][0-9][0-9]');
它以varchar2形式返回预期的数字,而不是其他形式

很好,那么这应该很好,我想:

select 
  to_number(nyszamtxt) 
  from gyta_megjegyzes 
  where REGEXP_LIKE (nyszamtxt, '[0-9][0-9][0-9][0-9]');
不,上面写着ORA 01722。00000-“无效号码”


我是不是错过了一些非常琐碎的事情?我不知道问题出在哪里。

一般来说,Oracle不会像abc1234xyz那样只删除非数字字符。您可能需要执行以下操作之一:

  • 绷紧你的表情:

    where REGEXP_LIKE (nyszamtxt, '^[0-9][0-9][0-9][0-9]$');
    
  • 脱衣舞角色:

    select 
    to_number(REGEXP_REPLACE(nyszamtxt, '[^0-9]+', '')) 
    from gyta_megjegyzes 
    where REGEXP_LIKE (nyszamtxt, '[0-9][0-9][0-9][0-9]');
    

一般来说,Oracle不会像在
abc1234xyz
中那样只去除非数字字符。您可能需要执行以下操作之一:

  • 绷紧你的表情:

    where REGEXP_LIKE (nyszamtxt, '^[0-9][0-9][0-9][0-9]$');
    
  • 脱衣舞角色:

    select 
    to_number(REGEXP_REPLACE(nyszamtxt, '[^0-9]+', '')) 
    from gyta_megjegyzes 
    where REGEXP_LIKE (nyszamtxt, '[0-9][0-9][0-9][0-9]');
    

一般来说,Oracle不会像在
abc1234xyz
中那样只去除非数字字符。您可能需要执行以下操作之一:

  • 绷紧你的表情:

    where REGEXP_LIKE (nyszamtxt, '^[0-9][0-9][0-9][0-9]$');
    
  • 脱衣舞角色:

    select 
    to_number(REGEXP_REPLACE(nyszamtxt, '[^0-9]+', '')) 
    from gyta_megjegyzes 
    where REGEXP_LIKE (nyszamtxt, '[0-9][0-9][0-9][0-9]');
    

一般来说,Oracle不会像在
abc1234xyz
中那样只去除非数字字符。您可能需要执行以下操作之一:

  • 绷紧你的表情:

    where REGEXP_LIKE (nyszamtxt, '^[0-9][0-9][0-9][0-9]$');
    
  • 脱衣舞角色:

    select 
    to_number(REGEXP_REPLACE(nyszamtxt, '[^0-9]+', '')) 
    from gyta_megjegyzes 
    where REGEXP_LIKE (nyszamtxt, '[0-9][0-9][0-9][0-9]');
    



只有null值,但它不应该在select中,因为regexp_类似于第一个查询给出的输出。它给出nullvalues@user2001117我更新我的问题有一些非数字字符,你能用
DUMP(nyszamtxt)看到其中的
ASCII
值吗
遇到此问题的人:您的Varchar2可能包含一些不可见的地雷,如“行尾”或简单的非数字字符。仅为空值,但它不应位于select中,因为regexp_类似于您的第一个查询给出的输出。它给出的是空值values@user2001117我更新我的问题有一些非数字字符,您是否可以使用
DUMP(nyszamtt)
查看其中的
ASCII
值,无论谁会遇到此问题:您的Varchar2可能包含一些不可见的地雷,如“行尾”或简单的非数字字符。只有空值,但是它不应该在select中,因为regexp_类似于您的第一个查询给出的输出。its giving nullvalues@user2001117我更新我的问题有一些非数字字符,你能用
DUMP(nyszamtxt)看到其中的
ASCII
值吗
遇到此问题的人:您的Varchar2可能包含一些不可见的地雷,如“行尾”或简单的非数字字符。仅为空值,但它不应位于select中,因为regexp_类似于您的第一个查询给出的输出。它给出的是空值values@user2001117我更新我的问题有一些非数字字符,你能用
DUMP(nyszamtxt)
看到里面的
ASCII
值吗?谁会有这个问题:你的Varchar2可能包含一些看不见的地雷,比如“行尾”或者简单的非数字字符。它可以工作,但我不明白为什么,所有的Varchar2都像“1256”,我看不到任何需要剥离的东西。奇怪。无论哪种方式,删除答案中的非数字字符都会更安全。您完全确定原始查询没有返回任何非数字字符吗?非常感谢!我的原始更新也在运行,我仍然很好奇为什么oracle需要去掉varchar2字段,而它显然只有4位数字,没有任何垃圾。当选项可用时,我会给你的答案打上正确的标记。@Drumberg,我打了三个勾,我怀疑某个地方有“l”而不是“1”,这类东西,什么都没有。现在我检查了结果,一条线的尽头就在那里!它能工作,但我不明白为什么,所有的Varchar2都像'1256',我看不到任何需要剥掉的东西。奇怪。无论哪种方式,删除答案中的非数字字符都会更安全。您完全确定原始查询没有返回任何非数字字符吗?非常感谢!我的原始更新也在运行,我仍然很好奇为什么oracle需要去掉varchar2字段,而它显然只有4位数字,没有任何垃圾。当选项可用时,我会给你的答案打上正确的标记。@Drumberg,我打了三个勾,我怀疑某个地方有“l”而不是“1”,这类东西,什么都没有。现在我检查了结果,一条线的尽头就在那里!它能工作,但我不明白为什么,所有的Varchar2都像'1256',我看不到任何需要剥掉的东西。奇怪。无论哪种方式,删除答案中的非数字字符都会更安全。您完全确定原始查询没有返回任何非数字字符吗?非常感谢!我的原始更新也在运行,我仍然很好奇为什么oracle需要去掉varchar2字段,而它显然只有4位数字,没有任何垃圾。当选项可用时,我会给你的答案打上正确的标记。@Drumberg,我打了三个勾,我怀疑某个地方有“l”而不是“1”,这类东西,什么都没有。现在我检查了结果,一条线的尽头就在那里!它能工作,但我不明白为什么,所有的Varchar2都像'1256',我看不到任何需要剥掉的东西。奇怪。无论哪种方式,删除答案中的非数字字符都会更安全。您完全确定原始查询没有返回任何非数字字符吗?非常感谢!我的原始更新也在运行,我仍然很好奇为什么oracle需要去掉varchar2字段,而它显然只有4位数字,没有任何垃圾。当选项可用时,我会给你的答案打上正确的标记。@Drumberg,我三次勾选,我怀疑某个地方有“l”而不是“1”之类的