At 06:51 a.m. 21/03/2014, [email protected] wrote:

>FB 1.5
>The following SQL (and variations of it) consistently fail to run (where 
>ClientNameis a domain defined as varchar(20), and Client_ID is a integer):
>
>Update ClientInfo CI
>set ClientName= 'A' + cast(CI.Client_ID as varchar(10))
>
>How can I update ClientName? 

In SQL the "+" symbol is an arithmetic operator.  The string concatenation 
operator is two pipe symbols ( || ).  So:

Update ClientInfo
set ClientName= 'A' || cast(Client_ID as varchar(10))

Usually you can rely on the engine to do the cast for you.  IOW, this should 
work too:

Update ClientInfo
set ClientName= 'A' || Client_ID

Incidentally, if you have been getting other parsing errors with your example, 
look at the way you are using table identifier aliases, e.g.,

Update ClientInfo CI
set CI.ClientName= 'A' || cast(CI.Client_ID as varchar(10))

i.e., if you refer to one column using the table alias then you should refer to 
all the other columns the same way.  But the aliases are redundant in a 
single-table DML statement so no need to make the engine work harder than it 
needs to. ;-) 


Helen Borrie, Support Consultant, IBPhoenix (Pacific)
Author of "The Firebird Book" and "The Firebird Book Second Edition"
http://www.firebird-books.net
__________________________________________________________________ 

Reply via email to