回答
你知道字符串將永遠是一個特定的長度嗎?如果是的話,你可能硬編碼一堆的子串/轉換爲詮釋/乘法步驟。這將不完全是很好,但...
編輯:爲了給多一點細節,想你知道這將是長度爲4,你可以這樣做:
SELECT (8 * CONVERT(int, SUBSTRING(@x, 1, 1)))
+ (4 * CONVERT(int, SUBSTRING(@x, 2, 1)))
+ (2 * CONVERT(int, SUBSTRING(@x, 3, 1)))
+ (1 * CONVERT(int, SUBSTRING(@x, 4, 1)))
道歉,如果語法稍微偏離。
不愉快,並且在更一般的情況下(您基本上需要以某種形式循環)不起作用,但它可能足以快速修復。如果downvoters可以請添加評論,這將是非常讚賞。T-SQL是在我的專業領域之外 - 解釋爲什麼這是一個糟糕的主意是更有幫助,而不僅僅是downvote來指示它是不好主意。)
我認爲這是downvoted導致其脆弱如地獄。像這樣的代碼總是打破生產 – 2009-09-09 23:12:52
我有一些模糊的類似HERE(StackOverflow),我在詢問T-SQL中定製的「基本」轉換。
這將是有趣的,看看你有什麼建議!
看起來像this function做你所需要的。 另外,看起來像這裏有an optimisation。
我不知道任何內置的,將在選擇語句工作,鑄造二進制或varbinary沒有幫助。
看起來像你被卡住,要麼寫作這是一個UDF或擴展存儲過程(託管或本地)。
另一種選擇可能是創建一個巨大的查找表並加入它。你可能會得到比Sql函數更好的性能,我沒有測試過它。我懷疑它會比擴展存儲過程更好。
Oki,這是第一次嘗試和快速破解並試圖解決這個問題。 它當然不是很漂亮,但可能會給你一些關於如何最好地解決問題的想法。
編輯:只是重讀sambo99答案,並指出優化版本鏈接提到那裏。我在回答之前錯過了。它看起來有些相似,但是這個最好是高達63位,因爲那個被引用的鏈接僅適用於高達31位,並且如果你試圖更多地傳遞它,它將會爆炸。這個版本忽略任何高於63的東西。
DECLARE @bin varchar(63)
DECLARE @origlen int
DECLARE @currlen int
DECLARE @tmp int
DECLARE @pwr bigint
DECLARE @dec bigint
DECLARE @val bigint
SET @pwr = 2
SET @dec = 0
SET @bin = '011111111111111111111111111111111' --Test Value
SET @bin = REVERSE(@bin)
SET @origlen = LEN(@bin)
SET @currlen = 0
WHILE(@currlen <> @origlen)
BEGIN
SET @tmp = CONVERT(int, SUBSTRING(@bin, @currlen + 1, 1))
IF (@tmp <> 0)
BEGIN
SET @val = @dec
SET @dec = POWER(@pwr, @currlen)
SET @val = @val + @dec
Set @dec = @val
END
SET @currlen = @currlen + 1
END
SELECT @val as 'Result'
希望這有助於。
- 1. 轉換TSQL到LINQ
- 2. TSQL GETDATE轉換
- 3. 轉換TSQL到LINQ到實體
- 4. TSQL日期轉換
- 5. 動態TSQL到PSQL轉換SDK?
- 6. 轉換配合物TSQL程序到PostgreSQL
- 7. TSQL轉換爲LINQ轉換參考?
- 8. TSQL將DateOffset轉換爲UTC
- 9. 打印0110作爲迴文
- 10. 轉換代碼vb 6到vb.net
- 11. 找不到Jetty 6 to 7轉換器
- 12. 轉換到實體框架6
- 13. 轉換 '爲const char [6]' 到「WCHAR **
- 14. 麻煩轉換一點TSQL到LINQ到實體
- 15. 的Safari 6和3D轉換
- 16. 轉換VB 6代碼VB.NET
- 17. TSQL轉換地址列表CIDR標記
- 18. 在tsql中將varchar轉換爲datetime
- 19. TSQL:錯誤而轉換timestap爲整數
- 20. 如何將此從TSQL轉換爲MYSQL?
- 21. 可以TSQL從布爾轉換爲BIT
- 22. 將Oracle代碼轉換爲TSQL
- 23. 轉換PLSQL函數成爲TSQL
- 24. 將DAX開關邏輯轉換爲TSQL
- 25. 需要DB2查詢轉換爲TSQL
- 26. 將查詢從Oracle轉換爲TSQL
- 27. tsql強制轉換爲金錢
- 28. TSQL NEWID轉換成十進制(38,0)
- 29. 避免TSQL數據轉換錯誤
- 30. 將PL/SQL腳本轉換爲TSQL
請看Peter DeBetta的[博客文章](http://sqlblog.com/blogs/peter_debetta/archive/2008/10/15/964.aspx);你可以用這個作爲起點。 – 2009-01-02 09:21:23