Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: SS65,SS7
Expertise: Intermediate
Jan 1, 2003

Swap the values of two columns

At times you may need to swap the values of two columns of the same SQL Server table. For example, suppose that you realized that the fname column of the Employee table contains the last name of each employee, and vice versa. Typically you do this from VB using a writeable cursor-based Recordset, as in:

Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim tmp As String

cn.Open "...your connect string..."
rs.Open "Employee", cn, adOpenDynamic, adLockOptimistic, adCmdTable
Do Until rs.EOF
    tmp = rs("fname")
    rs("fname") = rs("lname")
    rs("lname") = tmp
Loop
rs.Close
cn.Close
However, you can take advantage of T-SQL and perform the same operation much faster, by executing it on the server (instead of the client) and without any explicit loop. This is possible thanks to T-SQL temporary variables and the capability to assign and use them inside an UPDATE statement. This is the T-SQL statement that performs the swap:
DECLARE @tmp VARCHAR(50)
UPDATE employee SET @tmp=fname, fname=lname, lname=@tmp
and this is the VB code that executes it:

cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=pubs;Data " _
    & "Source=(local)"
cn.Execute "DECLARE @tmp VARCHAR(50)" & vbCrLf & _
    "UPDATE employee SET @tmp=fname, fname=lname, lname=@tmp"
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date