Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 我可以组合like和equal来获取数据吗?_Sql_Oracle - Fatal编程技术网

Sql 我可以组合like和equal来获取数据吗?

Sql 我可以组合like和equal来获取数据吗?,sql,oracle,Sql,Oracle,我有这样的数据 1234500010 1234500020 1234500021 12345600010 12345600011 123456700010 123456700020 123456710010 模式是 1-数据(瓦里安3-7位数)+2-数据(任意3位数)+3-数据(任意2位数) 我想创建SQL以仅获取1-data。 例如,我想获取数据12345 我只想要结果 1234500010 1234500020 1234500021 如果我使用“喜欢” 我将使用12345、123456和

我有这样的数据

1234500010
1234500020
1234500021
12345600010
12345600011
123456700010
123456700020
123456710010
模式是 1-数据(瓦里安3-7位数)+2-数据(任意3位数)+3-数据(任意2位数)

我想创建SQL以仅获取1-data。 例如,我想获取数据12345 我只想要结果

1234500010
1234500020
1234500021
如果我使用“喜欢”

我将使用
12345
123456
1234567

如果我使用equal,我将只获得一个特定数据

我能把like和equal结合起来得到我想要的结果吗

从数据中选择*,其中数据='12345+任何2-数据(3位)+任何3-数据(2位)'

有人能帮忙吗

补充:如果我没有提到数据类型,并造成一些沟通失误,我深表歉意。数据类型为char@戈登回答,其他人没有错。它适用于number和varchar。但不适用于字符类型。这里我发布了一些char数据类型的图片。Oracle字符数据类型规范是固定长度的。所以如果我输入的长度小于,剩下的部分就会变成一个空格。

多谢各位。希望有人能帮上忙

我想你需要:

select *
from data
where ID like '12345_____'  -- exactly 5 _

下面是一个演示答案的示例。

我想这会为您提供所需的解决方案

create table data(ID number(15));

insert into data values(1234500010);

insert into data values(1234500020);

insert into data values(1234500021);

insert into data values(12345600010);

insert into data values(12345600011);

insert into data values(123456700010);

insert into data values(123456700020);

insert into data values(123456710010);
从ID为“12345”的数据中选择*

//5_uu下划线后正好是5,2-data中的任意3位数字(3个下划线)和3-data中的2位数字(2个下划线)

您将获得(输出):

ID

1234500010

1234500020

1234500021


在0.00秒内返回3行

您真的无法将相等和
相结合,就像
。但您可以使用正则表达式来执行此类搜索,使用类似于函数的
REGEXP\u:

SELECT *
  FROM DATA
  WHERE REGEXP_LIKE(ID, '^12345[0-9]{3}[0-9]{2}');
但如果我理解正确,对于您的1位数据,您确实需要一个3到7位数字:

SELECT *
  FROM DATA
  WHERE REGEXP_LIKE(ID, '^[0-9]{3,7}[0-9]{3}[0-9]{2}');


祝你好运。

因为你的数据类型是CHAR
,戈登的答案对你不合适
CHAR
为小于最大限制的字符串添加尾随空格。您可以使用
TRIM
修复此问题,如图所示。但是,您最好将number存储在
number
类型中,而
CHAR
VARCHAR2
,这迟早会产生其他问题

select *
from data
where trim(ID) like '12345_____';

谢谢你的回复。如果我使用了
select*from-data-where-ID-like'12345\uuuuuuuuuuuuuu'
我还将获得数据12345600112345670011 12345670010 12345670020 123456710010请记住,第一个数据可以是3-7位数字之间的方差。我无法使用uu获取我想要的数据。我尝试了这个,似乎没问题。它显示了你需要的结果。@初学者,我不这么认为。你试过了吗?我尝试了我的数据库,我得到了所有的数据,包括ID为123456和1234567的数据。@ivanprakasa。解决方案是有效的。我已经包括了一个到rextester的链接。@ivanprakasa-你几乎肯定错了。Gordon发布的解决方案要求ID正好是10个字符。如果您得到了其他信息,那么您没有使用Gordon发布的确切查询。您是否在末尾添加了自己的
%
?还是做了其他的改变?完全按照发布的方式使用它。有什么原因不能将您的2-data和3-data合并为一个5位数字的单一规范吗?id的数据类型是什么?它是
char
还是有尾随空格?是,数据类型为char@BobJarvis对一些规范决定将其分开。即使总数是5位数字,但我不能将2位数据和3位数据合并为一个数字data@ivanprakasa-我不明白。你是说1-data、2-data和3-data之间可能有其他字符?在何种情况下,字符串“12345abc67defgh890”可以接受?是。感谢您的回答,并为此创建SQL。它适用于number和varchar,但似乎不适用于数据类型charThank you@Kaushik Nayak,用于分析另一边的问题,并帮助找出Gordon的答案不适用于我的原因。谢谢你。我真的很感激。对于您的解决方案也是如此。它成功了。我得到了我想要的结果。非常感谢你。谢谢你的建议。实际上是字母和数字的组合。所以它使用了char数据类型。为了便于理解,我的样品数量很多,但我犯了一个错误。这使沟通不畅和混乱。我为此道歉。谢谢所有帮助回答的人。有点离题了。有什么聪明的方法写吗?目前我手动写了5次,我可以声明变量并调用它5次吗?示例变量underbar='\'并从修剪(ID)如'12345'+5*underbar的数据中选择成为select*。我可以这样编写sql吗?@ivanprakasa:是的,您可以使用
lpad(:var,5,:var)
where:var是一个声明包含值为“\ux”的绑定变量,您也可以使用plsql变量。非常感谢。我试试看。
select *
from data
where trim(ID) like '12345_____';