Expiring Today—Celebrate National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

mysql concat

Posted on 2009-06-30
11
Medium Priority
?
920 Views
Last Modified: 2012-05-07
I am using the query below to update newstreet field however if there is a null record in the concat fields then the newstreet field is null. what can I do to carry on even if one of the fields are null.(Please mysql query only. no php)
thanks
update vaddress set newstreet = Concat(pre_dir, ' ', street, ' ', stype )
0
Comment
Question by:syedasimmeesaq
[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
  • 5
  • 3
  • 2
  • +1
11 Comments
 
LVL 39

Accepted Solution

by:
Roger Baklund earned 2000 total points
ID: 24748942
You could use coalesce:

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce
update vaddress set newstreet = Concat(coalesce(pre_dir,''), ' ', coalesce(street,''), ' ', coalesce(stype,'') )

Open in new window

0
 
LVL 2

Expert Comment

by:thinkingman2
ID: 24750483
use CONCAT_WS('separator',field1,field2,field3) like so:
update vaddress set newstreet = Concat_WS(' ',pre_dir, street, stype );

Open in new window

0
 
LVL 3

Expert Comment

by:tcsaddul9
ID: 24751283
update vaddress set newstreet = IFNULL(Concat(pre_dir, ' ', street, ' ', stype ), '')
0
Ransomware: The New Cyber Threat & How to Stop It

This infographic explains ransomware, type of malware that blocks access to your files or your systems and holds them hostage until a ransom is paid. It also examines the different types of ransomware and explains what you can do to thwart this sinister online threat.  

 
LVL 3

Expert Comment

by:tcsaddul9
ID: 24751294
Or if you still want some to be retained:

update vaddress set newstreet = Concat(IFNULL(pre_dir,'<N/A>'), ' ', IFNULL(street,'<N/A>'), ' ', IFNULL(stype,'N/A'))

You use the string 'N/A' to signify that no such data inputted. In your program, you can detect such value and perform a task accordingly.
0
 
LVL 2

Expert Comment

by:thinkingman2
ID: 24751314
The problem with IFNULL, etc, is that you have to define that for every field, and then you end up with very unclean output results (for example, your newstreet will be full of values like 'N/A Fifth Avenue' and '145 Fifth N/A' - the cleanest solution would be to first create a field on your table called 'flagged_incomplete' and run your queries like so:
update vaddress add `flagged_incomplete` int(1) default 0 BEFORE `newstreet`;
 
update vaddress set `flagged_incomplete` = NULL where (is_null(pre_dir) OR is_null(street) OR is_null(stype));
 
// now run the query with concat_ws:
 
update vaddress set newstreet = Concat_WS(' ',pre_dir, street, stype );
 
//now, at least you can find incomplete addresses by using:
 
select * from vaddress where flagged_incomplete = 1;

Open in new window

0
 
LVL 2

Expert Comment

by:thinkingman2
ID: 24751317
(sorry the first query should read as follows)
ALTER TABLE vaddress ADD `flagged_incomplete` int(1) default 0 BEFORE `newstreet`;

Open in new window

0
 
LVL 3

Expert Comment

by:tcsaddul9
ID: 24751488
A cleaner output would be:

update vaddress set newstreet = Concat(IFNULL(pre_dir,''), ' ', IFNULL(street,'''), ' ', IFNULL(stype,''))

You don't need to add another field just to check incomplete address.  The following can do the trick:

select * from vaddress where (pre_dir + street + stype) is null

or

select * from vaddress where pre_dir is null or street is null or stype is null
0
 
LVL 33

Expert Comment

by:snoyes_jw
ID: 24751505
The CONCAT_WS() that thinkingman2 showed is the cleanest approach; it avoids repeating the separator for each argument, and it quietly skips any arguments that are NULL.
0
 
LVL 2

Expert Comment

by:thinkingman2
ID: 24767116
hmm... ok, but i'm not sure why using coalesce would be better in this case? anybody have an answer to that?
0
 
LVL 39

Expert Comment

by:Roger Baklund
ID: 24767189
I don't think it is better... but it is good enough: it gets the job done. Maybe the asker just started from the top and accepted the first working solution.
0
 
LVL 2

Expert Comment

by:thinkingman2
ID: 24767264
makes sense!
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

By, Vadim Tkachenko. In this article we’ll look at ClickHouse on its one year anniversary.
In this article, I’ll talk about multi-threaded slave statistics printed in MySQL error log file.
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
Suggested Courses

719 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