Select * from tbl where product like ('abc','def','rgh');
Hi Guys,
My requirement is I need to filter by providing date value with some of the porduct details and prod_id may differ with product like
prod_id product date
01 abc 01/2012
02 abc 02/2012
03 def 03/2012
How can we put multiple text conditions using LIKE operator in where clause of the sql query.
if we use union to combine all the sql queries, how can we filter by entering date value.
SQL>select * from tbl where product like ('abc','def','rgh');
Please provide any ideas on the same.
Thanks in advance!
-LK
select * from tab1 where regexp_like(product,'^abc|def|rgh');
Similar Messages
-
SELECT * FROM mytable WHERE ANYCOLUMN like myString
Hi ALL,
Is there a way i can select a row wherein any of the columns contain my search string?
SELECT *
FROM mytable
WHERE ANYCOLUMN like '%myString%'Thanks!
BROKENExample of it working...
SQL> var val varchar2(5)
SQL> exec :val := 'KING'
PL/SQL procedure successfully completed.
SQL> ed
Wrote file afiedt.buf
1 select distinct substr (:val, 1, 11) "Searchword",
2 substr (table_name, 1, 14) "Table",
3 substr (t.column_value.getstringval (), 1, 50) "Column/Value"
4 from cols,
5 table
6 (xmlsequence
7 (dbms_xmlgen.getxmltype ('select ' || column_name
8 || ' from ' || table_name
9 || ' where upper('
10 || column_name
11 || ') like upper(''%' || :val
12 || '%'')'
13 ).extract ('ROWSET/ROW/*')
14 )
15 ) t
16 where table_name = 'EMP'
17* order by "Table"
SQL> /
Searchword Table Column/Value
KING EMP <ENAME>KING</ENAME>
SQL> -
Select * from TABLE where Filed like pa_input.
Hello,
the following works fine
select * from ZTABLE INTO wa_myarea WHERE myfield LIKE 'a%'.
Now I don't want to hard code the selection criteria for myfield, but let the user select one, so I did:
parameters pa_input type mytype.
select * from ZTABLE INTO wa_myarea WHERE myfield LIKE pa_input.
If the user enters now for example a% everything works again fine. But I assume that a user rather would enter a* for a wild card search and that doesn't work. Do I have to manually replace all * in my variable with % before I run the select statement? I hope not... What would be the best way?
Thanks.Moderator message - Please do not ask basic questions - thread locked
Rob -
Search * from t where a like b case-insensitive ?
I have a Database-field (CHAR60) that contains text with upper and lower case letters. In my application, the user can search for entries in the DB table using this field, which leads to an SQL statement like this:
SELECT * FROM table WHERE field LIKE pattern INTO...
My question:
If I search for "abc", i won't find entries with "aBc". Can I do a case-insensitive search with SELECT and LIKE?Hello Daniel,
What is the domain(CHAR60) for the field that you are searching for?
The domain has an attribute called <i>Lowercase</i>, and it is my understanding that so long as this is checked, the data will be stored in the database exactly like it was entered on the screen (case-sensitive).
If thst is the case with your domain, then I guess you would have to make do with something like:
SELECT *
FROM table.
TRANSLATE : TABLE-FIELD TO UPPERCASE,
PATTERN TO UPPERCASE.
IF TABLE-FIELD CS PATTERN.
* Do your processing here...or fill the internal table
ENDIF.
ENDSELECT.
I know this code has been a bit crude, but this is the essence.
Regards,
Anand Mandalika. -
Select ename from emp where ename like LIKE 's%';
Hi friends,
select ename from emp where ename like LIKE 's%';
output am geting like this naseer
anusha
basha
But I want to display like this naeer anuha baha784585 wrote:
Hi friends,
select ename from emp where ename like LIKE 's%';
output am geting like this naseer
anusha
basha
But I want to display like this naeer anuha baha
Use REPLACE function:
SQL> select replace('naseer','s','') replace from dual;
REPLACE
naeerKamran Agayev A.
Oracle ACE
My Oracle Video Tutorials - http://kamranagayev.wordpress.com/oracle-video-tutorials/ -
How do I do SELECT * FROM TABLE WHERE KEY IN ({list})?
The title says it all really.
Is there a reasonable performant way to perform the query
SELECT * FROM TABLE WHERE KEY IN ({list})where {list} is String []?
I am currently creating a PreparedStatement with a for loop like this StringBuffer sb = new StringBuffer ("SELECT * FROM TABLE WHERE ID IN (");
for (int ii=0;ii<keys.length;ii++) {
sb.append (keys [ii]);
if (ii != keys.length-1) sb.append (",");
sb.append (")");but this means that the prepared statement is created each time I call my method and so I'm not sure that the optimizer will find it easy to cope with. Is there a construction that I'm missing along the lines of SELECT * FROM TABLE WHERE KEY = ? where I can create the PreparedStatement once and just call setObject or something on it when the values in {list} change?but this means that the prepared statement is created
each time I call my method and so I'm not sure that
the optimizer will find it easy to cope with.You are right, the optimizer won't find that easy to deal with (presuming that is even relevant for your driver/database.) But most optimizers won't do anything with statements that change and that is what you are doing.
You could create several prepared statements which have a common number of bind variables. For example 10 statements with from 1 to 10 bind values. This will work if most of the queries use those. -
Hi, I have a quick question I hope someone can help me with. I'm a student and what I'm looking for should be easy but I can't find any information on it.
Here's my code, it's probably self-explanatory but to clarify I'm trying to get a list of "Captains" in the order of who has the most wins.
The problem is that the database tables have thousands of "Captains" and I'm only supposed to look at 200 specific "Captains" which have their ssn in a specific arraylist and then return the top 80 "Captains" from that selection.
Something like this...
SELECT first 80 E.name, L.ssn, COUNT(L.wins) as Wins
FROM log L, employees E
where type matches "[Captain]"
and E.ssn = L.ssn
and L.ssn IN (...arraylist...) // How do I loop through the arraylist but still return a list of the top 80 winners?
group by E.name, L.ssn
order by Wins desc;
Should I start by taking the list of social security numbers from the arraylist and insert them into a temporary table and then use that temporary table to base my selection on?
For example:
int rows = 0;
PreparedStatement ps = conn.prepareStatement("INSERT INTO TEMP captainsTemp (ssn) VALUES(?)");
Iterator i = myArrayList.iterator();
while (i.hasNext())
// Set the variables
for (int pos = 1; pos <= 63; pos++)
String s = (String)i.next();
ps.setString(pos,s);
// insert a row
rows += ps.execute();
...and then below that I could use
"SELECT * FROM captains
WHERE ssn IN (SELECT * FROM captainTemp)..."
This looks like an ugly solution and I'm not sure if it works, sessionwise..
Everything's written in Java and SQL.
If you have any thoughts on this I would be most grateful.
I should add that this is NOT a school assignment but something I'm trying to figure out for my work...
Many thanks,
sincerely,
JT.hi,
Ignore my previous response. Try out this one. It should help you.
Lets take the example of EMP table (in Oracle's SCOTT Schema). The following is the description of the table.
SQL> desc emp
Name Null? Type
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2)
SQL> select ename from emp;
ENAME
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
Say, the ArrayList contains 3 names CLARK,KING & MILLER. You want to loop through the ArrayList for the ENAME values.
First construct a string like below from the ArrayList.
"ename in 'CLARK' OR ename in 'KING' or ename in 'MILLER'";
Append this string to the normal SELECT Query
Query :
select ename from emp where ename in 'CLARK' OR ename in 'KING' or ename in 'MILLER'
Here you get the desired output & thats pretty fast because you just do it once !!!
SQL> select ename from emp where ename in 'CLARK' OR ename in 'KING' or ename in 'MILLER';
ENAME
CLARK
KING
MILLER
you can extend this to your Query also.
thanks,
Sriram -
Select * from viewname where 1 1 gives records back
for one customer the following sql gives records back
select * from viewname where 1<>1
we asked the customer to send over the database to us but we can't reproduce this behaviour. We don't get any records. the problem is we don't have the same version of oracle they use 9.2.0.4 and we used 10.2.0.1. i can't download the 9i version anymore.
Does anybody know of a bug in oracle which can cause such behaviour or a setting which can correct this?
Edited by: BluShadow on 09-Aug-2012 10:06
corrected the <> issue so it's visible. Please read {message:id=9360002} which describes this issue.951790 wrote:
i suspect the customer would first want us to show that their version is the problem.It doesn't work like that. If your customer called Oracle Support and said... "we're experiencing problems and our database version is 9.2.0.4"... oracle would turn around and say "that version is no longer supported, please upgrade". If they insist on knowing that their version is the problem, then the answer is "yes, it's the problem, it has known bugs and newer versions are available that address thousands of issues since"
Using a query with "where 1 <> 1" as a condition that is bringing back results, is clearly wrong. You have clearly shown that in other more recent versions of the database it is working ok, therefore you have already proven that there is a bug in the version they are using.
They are suspecting our view has a design flaw. We have in our documentation stated requirements for our software are the 9 or 10 version of oracle or sql server. So for me there are a couple of possibilities:
-we try to reproduce the query on their database on the same oracle database version as they are using - problem is we don't have this exact same version and oracle does not have this version for download on their site anymore or so it seemsThat's because it's no longer supported. Any good software house will keep on top of it's customers to ensure they are upgraded in line with Oracle's ability to support. So, partially, it's your companies fault for saying you support version 9, when clearly you can't.
--i ask other more knowledgable people(hopefully this forum) who might know about such problems which might result in a correction in the customer oracle database configuration or know of a bug in the customers version which causes this behaviour.You'll be lucky to find people still using such an old version (you're talking a version that almost 10 years out of date). The best you can do is to log onto Oracle Support and search there for known issues... and the answer on those is likely to be a recommendation to patch or upgrade too.
-we change the queries to these views so they won't try to give back any records on their serverHow will you know unless you are able to test them? -
How to achieve that "SELECT * FROM table WHERE age BETWEEN 18 AND 23 AND n"
How to achieve the SQL like that "SELECT * FROM table WHERE age BETWEEN 18 AND 23 AND name = 'Will' " with BDB C-API
The primary key in the primary database is 'age' ,and the secondary key in the secondary index is 'name' ,in a lot of examples ,there are all simple , but how to do that complex one.thx~but this means that the prepared statement is created
each time I call my method and so I'm not sure that
the optimizer will find it easy to cope with.You are right, the optimizer won't find that easy to deal with (presuming that is even relevant for your driver/database.) But most optimizers won't do anything with statements that change and that is what you are doing.
You could create several prepared statements which have a common number of bind variables. For example 10 statements with from 1 to 10 bind values. This will work if most of the queries use those. -
General veriable in (select * from cust where id in(:var))
hi
i deal with view object and i have this query
SELECT * FROM customers
WHERE customers.id IN (:val);
but i want pass value for val =101,201,301
how can i do it and what is the type of variable to input at the same time 1,2,3 and query filter ?
thanksthank's for your replay
i try make it string but do not success and i input the parameters from baking bean
when i try with just one value like 101 that work
but with "101,102" that do not work may be know like one variables
its mean :val="101,102" and :val variable it is string type
thank s -
SELECT FROM tab WHERE co varname -PLEASE HELP
Hi
I am trying to use a select query where col1 > 3. Instead of 3 i HAVE to use a variable name . Im getting data type mismatch in criteria expression error when i use this code:
String query ="SELECT * FROM MEMBERS WHERE M_ID > '" + myvar + "' ";
Please note that i tried using myvar as a String, int and even as a long - all in vain - resulted in same error.
What am i doing wrong in that piece of code please?
THANKS LODES
sabcarinaok thanks . like YOU said this worked:
String query= "SELECT * FROM MEMBERS WHERE M_ID >" + myvar;
So please i need to LEARN the need for single quotes in the SQL queries:
What is it used for and why ? i mean i know it is for Strings but why do we need to enclose these varnames in single quotes?
THANKS A MILLION
sabcarina -
SELECT * FROM TESTTABLE WHERE ID IN (?)
Hi,
I have a query (SELECT * FROM TESTTABLE WHERE ID IN (?)) and I want to pass in parameter a list of values (an array or something like that) to put in my condition IN.
How can I do in java ? Is there something special in the PreparedStatement ? Or have I to use another statement ?
ThanksGeoffrey,
You can formulate the sql query in the java side, and IN clause demands the arguements separates by commas,
So you can easily prepare that string by taking the values from the parameters and inserting into that String separated by commas.
Its better to that that operation in the java part rather than in the procedure if you are only running this query in that Procedure.
Thanks.
Hi,
I have a query (SELECT * FROM TESTTABLE WHERE ID IN (?)) and I want to pass in parameter a list of values (an array or something like that) to put in my condition IN.
How can I do in java ? Is there something special in the PreparedStatement ? Or have I to use another statement ?
Thanks -
Can I simulate SELECT * FROM TABLE WHERE ROW IN (1111,2222) using SQLJ
I have a fct like
public void fct(String inStr) {
String str = "SELECT * FROM TABLE WHERE ROW IN" + inStr;
// then I xecute the query using JDBC connection
But I want to do the same thisn using SQLJ like:
public void fct(String inStr) {
#sql [nctx] iter = { SELECT * FROM TABLE WHERE ROW IN :inStr}
When I run the second version and give a parameter like "(1111,2222)" it gives
ORA-01722: invalid number error.
Is there a way to give parameters to in clauses of SQLJ statements.
Thanks in regard.This is a SQLJ FAQ. You can find the FAQ at:
http://technet.oracle.com/tech/java/sqlj_jdbc/htdocs/faq.html
Your question is addressed in the following section:
http://technet.oracle.com/tech/java/sqlj_jdbc/htdocs/faq.html#variablesizevaluelist
Note that that section has a typo. The lines:
? // populate mynumbers
#sql { SELECT * FROM tab WHERE col in (:(a[0]),:(a[1]),?};
should read:
... // populate mynumbers
#sql { SELECT * FROM tab WHERE col in (:(a[0]),:(a[1]),...};
By the way, with the next release SQLJ will support pasting in of dynamic SQL fragments. Then you'll be able to do pretty much what you are trying to accomplish here (albeit with slightly different syntax). Until then you'd have to use the workarounds from the FAQ. -
Reason behind this query ,SELECT * FROM table WHERE 1 0
HEllo,
I would like to know the reason behind using this query ,
SELECT * FROM <table> WHERE 1 < 0
before executing the actual SQL query.
Is there any special reason or the JDBC receiver side is configured like that.
Is there any option to overcome this process like, can we remove this option or stop using this.
Why the JDBC adapter basically sending this query on the DB?
Thanks,
Soorya,Hi,
if you run this query, you wont be able to see any records of the table.
SELECT * FROM <table> WHERE 1 < 0
if you run this query you will see all records
SELECT * FROM <table> WHERE 0 < 1
same with SELECT * FROM <table> WHERE 1=1
So you can check this out that whats happening in your code before executing actual query. just try to co-relate.
regards
Aashish Sinha
PS : reward points if helpful -
Newbie Select * FROM table where IF Numeric else something else
I have a text on a web page. If one can enter an EMPLOYID ( like 55 ) or
lastname like 'SMITH'.
I tried using INSTR and Substr but no avail.
Select *
from Atable
WHERE
IF SUBSTR(myfield,1,1)="0" OR
IF SUBSTR(myfield,1,1)="1" OR
etc.
EMPID=to_number(myfield)
ELSE
Upper(Lastname) like Upper(myfield)
Suggestions?
TIA
SteveYes myfield could be either "55" OR it could be "SMITH"
Otherwise I would have to have 2 textboxes on the web page.
One for EmployeeID and one for lastname.
Thanks.
Steve
Maybe you are looking for
-
I have a long document and I want to be able to search for certain key words and phrases, and then see how many times they appear in the document and exactly where. How do I conduct this sort of search and viewing? In the past, in Pages and Word, I
-
Ports Crystal Reports uses when Connecting to a Universe as a Data Source
I have a couple of Crystal Reports that use universes as a data source. On my Windows 7 machine I am getting an error message that "Logon Failed", rather opening and running the same report on my Windows XP machine, I get the results from the univer
-
Toshiba 3.0 USB external hard drive can't be accessed
I got a new pc (8.1 64) The external hard drive shows up in the folders window, but when I try to open it, I get the following message:" F:\ is not accessible. Access is denied." My son-in-law says this is because when I originally set it up on my ol
-
need to access flash player on this computer
-
Should I purchase the 16GB or 32GB iPad?
I'm looking into buying the latest iPad. I'm unsure of whether settling for the 16GB or going extra for the 32GB. I have about 5GB of music. I'm looking to have this iPad for reading books, magazines, maybe text books. I'm app crazy, so I love to buy