Sql 不应该';这个Oracle to_number函数不起作用吗?
我有点迷失在一个应该很琐碎的问题中。我检查了相关的问题,导致检查regexp拟合,他们这样做。我有一个4个字符长的varchar2,oracle不想将其转换为数字 我查了一下: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
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]');
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]');
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]');
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]');
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”之类的