SQL Server中varbinary與varchar之間的相互轉換


前言

  作為一個大三玩完兒即將進入大四的‘學長’來說,大三讀完了,大家也差不多快到‘分道揚鑣’的時候了(其實早就不想在學校繼續讀書了),這個時候如果你不考研的話,找工作,最重要的是找個實習應該是當務之急的事情了吧。但是問題就來了,作為一個半吊子(例如我)來說,找一個靠譜的實習單位絕對是一件讓人痛苦的事情,整天在各大招聘網站上面逛來逛去,大家實習單位在暑假前就已經找好了,這時候招聘信息已經不多了,所以供我們選擇的余地也已經少只有少。
   不過我可能是那其中比較幸運的一只吧,我在一家算不上很大的公司里面找到了一個數據庫的實習生崗位,這其中也談不上經驗,大概就只有些許的運氣還有我學過一點c#而已了。盡管如此,找准自己的專業方向(雖然我沒有面上c#開發)並且做好必要的准備工作是非常重要的,另外盡量使自己接觸的東西多一些,例如如果你是計算機方向的話,大學的時候大部分人並不需要把語言掌握的非常牛逼,但是如果你都接觸過一些,例如c,c++,c#,java,html之類的語言,並且算法相關的知識,數據庫,操作系統什么的你都能夠說上來一兩點的話,這樣面試也就不至於讓自己太過於尷尬了。

正文

  由於我現在主要是做數據庫了,因此以后接觸更多的是SQL Server方面的東西。這篇博客主要講的是SQL Server中的 varchar和varbinay之間相互轉換的問題,二進制數據在SQL Server中是作為十六進制顯示的,那么這個問題舉個栗子就是給你一個例如‘0x12abcd’這樣的字符串或者十六進制數據,你要將它轉換為‘0x12abcd’對應的十六進制數據或者是字符串,這個問題咋看上去很簡單,但做起來是有些難度的(當然大牛除外了),因為考慮到十六進制數據在內存中的存放方式和字符串不一樣,所以處理起來要費勁一些。

  接下來我介紹一種比較簡單的方法,首先介紹從varchar數據轉換到varbinary數據的方法,這個方法個人覺得比較巧妙,因為它用到了SQL Server中的sp_executesql的方法,它可以方便的幫我們解決眼前的問題。解決辦法是這樣的:

	declare @str nvarchar(1000),@a varbinary(500),@sql nvarchar(max)
	set @str=N'0x12abcd'
	set @sql=N'set @p='+@str+N';'
	exec sp_executesql   @sql,
						 N'@p as varbinary(500) output',
						 @p=@a output
	select  @a

  上面的方法不能倒過來用,不過SQL Server提供了我們一個標量函數來解決從varbinay數據到varchar的問題,用法如下:

	declare @bin varbinary(1000)
	set @bin=0x12abcd
	select sys.fn_varbintohexstr(@bin)

  完。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM