Làm cách nào để chuyển đổi giá trị cột từ varbinary(max)
sang varchar
ở dạng con người có thể đọc được?
Làm cách nào để chuyển đổi giá trị cột từ varbinary(max)
sang varchar
ở dạng con người có thể đọc được?
Câu trả lời:
"Chuyển đổi a varbinary
thành varchar
" có thể có nghĩa khác nhau.
Nếu varbinary là biểu diễn nhị phân của một chuỗi trong SQL Server (ví dụ trả về bởi đúc để varbinary
trực tiếp hoặc từ DecryptByPassPhrase
hoặc DECOMPRESS
chức năng), bạn có thể chỉ CAST
nó
declare @b varbinary(max)
set @b = 0x5468697320697320612074657374
select cast(@b as varchar(max)) /*Returns "This is a test"*/
Điều này tương đương với việc sử dụng CONVERT
với tham số kiểu là 0
.
CONVERT(varchar(max), @b, 0)
Các thông số kiểu khác có sẵn CONVERT
cho các yêu cầu khác nhau như đã nêu trong các câu trả lời khác.
SELECT CAST('This is a test' AS VARBINARY(100))
đó là 0x5468697320697320612074657374
trong collation mặc định của tôi và chuyển đổi nó sao cho varchar
chuỗi. Câu trả lời của Gunjan trả về biểu diễn hex dưới dạng một chuỗi ('5468697320697320612074657374') Có lẽ cách giải thích này đúng với nhu cầu của OP vì họ đã chấp nhận nó.
CONVERT
có tham số kiểu để chọn theo cách bạn muốn (theo cách hiểu của tôi là kiểu mặc định) Vì vậy, câu trả lời này có thể không phải là những gì bạn cần cho trường hợp sử dụng của mình vào lúc này nhưng nó đúng cho các trường hợp sử dụng khác. Bao gồm cả câu hỏi ban đầu của người chỉ định "dạng người đọc được" không phải hex.
Biểu thức sau phù hợp với tôi:
SELECT CONVERT(VARCHAR(1000), varbinary_value, 2);
Dưới đây là thông tin chi tiết về lựa chọn kiểu dáng (tham số thứ ba).
Thực ra câu trả lời tốt nhất là
SELECT CONVERT(VARCHAR(1000), varbinary_value, 1);
bằng cách sử dụng " 2
" cắt bỏ " 0x
" ở đầu varbinary
.
Thử cái này
SELECT CONVERT(varchar(5000), yourvarbincolumn, 0)
Đối với một VARBINARY(MAX)
cột, tôi phải sử dụng NVARCHAR(MAX)
:
cast(Content as nvarchar(max))
Hoặc là
CONVERT(NVARCHAR(MAX), Content, 0)
VARCHAR(MAX) didn't show the entire value
Hãy xem phần bên dưới vì tôi đang gặp khó khăn trong quá trình đăng bài gốc [Đây] [1]
bcp "SELECT CAST(BINARYCOL AS VARCHAR(MAX)) FROM OLTP_TABLE WHERE ID=123123 AND COMPANYID=123"
queryout "C:\Users\USER\Documents\ps_scripts\res.txt" -c -S myserver.db.com -U admin -P password
[1]: https://stackoverflow.com/questions/60525910/powershell-truncating-sql-query-output?noredirect=1#comment107077512_60525910