Solved

How do I query for blank spaces when I don't know how many blank spaces could exist

Posted on 2011-09-23
14
367 Views
Last Modified: 2012-05-12
I am trying to find out how many records hae a blank value in a field. I tried the following query because I don't know how many blank spaces could exist

Select count(*) from bib_holdings where publication_date like ' % ';

Is there a more accurate query that would pick all the records that would have any number of blank spaces in the publication_date field?
0
Comment
Question by:sikyala
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
14 Comments
 
LVL 74

Accepted Solution

by:
sdstuber earned 300 total points
ID: 36588418
where publication_date like '% %';
0
 
LVL 74

Assisted Solution

by:sdstuber
sdstuber earned 300 total points
ID: 36588421
where regexp_like(publication_date,' ')
0
 
LVL 74

Assisted Solution

by:sdstuber
sdstuber earned 300 total points
ID: 36588423
where replace(publication_date,' ') != publication_date
or (replace(publication_date,' ')  is null and publication_date is not null)
0
Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 74

Expert Comment

by:sdstuber
ID: 36588435
your original where clause would only count rows that begin and end with a space

the three above will count rows that have at least one space anywhere in the string
0
 
LVL 35

Assisted Solution

by:johnsone
johnsone earned 100 total points
ID: 36588583
My personal choice would be:

WHERE INSTR(PUBLICATION_DATE, ' ') > 0
0
 
LVL 15

Assisted Solution

by:x77
x77 earned 100 total points
ID: 36589556
To find records with 3+ Spaces:

select *  
from YourTable
where (length(YourFld)-length(replace(YourFld,' ','')))>2;
0
 
LVL 74

Expert Comment

by:sdstuber
ID: 36589567
http:#36589556  doesn't handle nulls properly

for instance,  if YourFld= '         ',  it will fail


see  http:#36588423
0
 

Author Comment

by:sikyala
ID: 36589651
yes i just realized that because the field has a date datatype it won't allow blank spaces so my queries are accurate when they return no rows
0
 
LVL 74

Expert Comment

by:sdstuber
ID: 36589667
>> field has a date datatype

if publication_date is really a DATE  then this condition doesn't make any sense

   publication_date like ' % ';

It's legal syntax because you'll get an implicit conversion from date to string but it's not helpful
it simply adds extra work to your query for no functional gain at all
0
 

Author Comment

by:sikyala
ID: 36589681
i didn't realize that it wasn't possible until after I asked the question and tried different tests including updating a record with a blank space in the publication_date field
0
 
LVL 74

Expert Comment

by:sdstuber
ID: 36589727
not only is the condition not helpful,  it can even be misleading,
again, because of implicit conversions


SQL> create table bib_holdings(publication_date date);

Table created.

SQL> insert into bib_holdings values (sysdate);

1 row created.

SQL> insert into bib_holdings values (sysdate-1);

1 row created.

SQL> insert into bib_holdings values (sysdate+1);

1 row created.

SQL> commit;

Commit complete.

SQL> Select count(*) from bib_holdings where publication_date like ' % ';

  COUNT(*)
----------
         3

SQL>

Open in new window

0
 
LVL 74

Expert Comment

by:sdstuber
ID: 36589764
curious,  why was http:#36589556  chosen?  it does not work reliably to find spaces

please don't score with  "everybody wins",
you should only accept the posts that are helpful toward the question you asked
0
 

Author Comment

by:sikyala
ID: 36590418
I calculated a count of records with a value and records with a null value and total number of records that exist in the table. The number with a value plus the number with a null value equaled the total value in the table. The queries offered did work and returned no results. I used them all so I assigned points to them
0
 
LVL 74

Expert Comment

by:sdstuber
ID: 36590987
well I guess given that your specific situation was quirky (using implicit conversion on a date to check for string values)  then I guess that query "could" have worked.

but, it's not a valid solution for your question in general.
in fact, it's not even reliable for your specific situation  - it might have worked for your session, but isn't guaranteed to work in general

SQL> create table bib_holdings(publication_date date);

Table created.

SQL> insert into bib_holdings values (sysdate);

1 row created.

SQL> insert into bib_holdings values (sysdate-1);

1 row created.

SQL> insert into bib_holdings values (sysdate+1);

1 row created.

SQL> commit;

Commit complete.

SQL> Select count(*) from bib_holdings where publication_date like ' % ';

  COUNT(*)
----------
         3

SQL> select * from bib_holdings where (length(publication_date)-length(replace(publication_date,' ','')))>2;

no rows selected

SQL>

Open in new window

0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Background In several of the companies I have worked for, I noticed that corporate reporting is off loaded from the production database and done mainly on a clone database which needs to be kept up to date daily by various means, be it a logical…
Configuring and using Oracle Database Gateway for ODBC Introduction First, a brief summary of what a Database Gateway is.  A Gateway is a set of driver agents and configurations that allow an Oracle database to communicate with other platforms…
This video shows how to set up a shell script to accept a positional parameter when called, pass that to a SQL script, accept the output from the statement back and then manipulate it in the Shell.
This video shows how to recover a database from a user managed backup

726 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question