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

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


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

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


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
×
We have made updates to our Privacy Policy to reflect the implementation of the General Data Protection Regulation.
Thanks for your registration, follow us on our social networks to keep up-to-date