binary(100)
-->>
varbinary(100)
declare @ varchar(100),@s varchar(100)
select @='char_Bin'
select @,len(@),'***'+@+'***',len('***'+@+'***')
select @s=cast(cast(@ as varbinary(100)) as varchar(100))
select @s,len(@s),'***'+@s+'***',len('***'+@s+'***')
declare @s char(100)
set @s='EE'
select '***'+ cast(cast(@s as binary(100)) as char(100)) + '***'
/*
***EE ***
*/
declare @s varchar(100)
set @s='EE'
select '**'+ cast(cast(@s as varbinary(100)) as varchar(100)) + '**'
/*
**EE**
*/
declare @ varchar(100),@s varchar(100)
select @='char_Bin'
--select
--@,
--len(@),'***'+@+'***',len('***'+@+'***')
select @s=cast(
cast(@ as binary(100)) -- 轉換成這個的時候, 結果的長度是 100 了(尾部用 0x00 填充)
as varchar(100)) -- 再轉換回 varchar 的時候, 尾部填充的 0x00 也不會消失
select @s,len(@s),
'***'+@s+'***', -- 在顯示字符串的時候, 遇到編碼 0x00 的時候會中斷后面的顯示, 故 @s 后面的數據是有, 但顯示不出來
len('***'+@s+'***')
select CAST('a' as BINARY(10))
;WITH
ID AS(
SELECT TOP(256)
id = CONVERT(varbinary(1), ROW_NUMBER() OVER(ORDER BY O.object_id) - 1)
FROM sys.objects O, sys.columns C
)
SELECT
ID,
'a' + CONVERT(varchar, id) + 'b',
REPLACE('a' + CONVERT(varchar, id) + 'b', 0x00, 0x20)
FROM ID
WHERE CHARINDEX(0x00, CONVERT(varbinary(8000), 要判斷的數據)) > 0
declare @ varchar(100),@s varchar(100)
select @='char_Bin'
select @,len(@),'***'+@+'***',len('***'+@+'***')
select @s=cast(cast(@ as binary(100)) as varchar(100))
--大家看一下結果:為什么'***'+@s+'***'的顯示結果后三個星號沒了呢????
select @s,len(@s),'***'+@s+'***',len('***'+@s+'***')
/*
------------ ----------- ---------------------------------------------------------------------------------------------------------- -----------
char_Bin 100 ***char_Bin *** 106
(所影響的行數為 1 行)
*/
declare @ varchar(100),@s varchar(100)
select @='char_Bin'
select @,len(@),'***'+@+'***',len('***'+@+'***')
select @s=cast(cast('***'+@+'***' as binary(100)) as varchar(100))
select @s
***char_Bin***
declare @ varchar(100),@s varchar(100)
select @='char_Bin'
select @,len(@),'***'+@+'***',len('***'+@+'***')
select @s=cast(cast(@ as binary(100)) as varchar(100))
select '***'+@s+'***'
***char_Bin
--你這樣試試:
declare @ varchar(100),@s varchar(100)
select @='char_Bin'
select @,len(@),'***'+@+'***',len('***'+@+'***')
select @s=cast(cast(@ as binary(100)) as varchar(100))
--大家看一下結果:為什么'***'+@s+'***'的顯示結果后三個星號沒了呢????
--select @s,len(@s),'***'+@s+'***',len('***'+@s+'***')
select right('***'+@s+'***', 10)
declare @ varchar(100),@s varchar(100)
select @='char_Bin'
select @s=cast(cast(@ as binary(100)) as varchar(100))
select replace(@s+'-','-','***')
--char_Bin***
declare @ varchar(100),@s varchar(100)
select @='cha所附撒r_Bin'
select @s=cast(cast(@ as binary(100)) as varchar(100))
select @s = left(@s,charindex(0x00,cast(@s as varbinary))-1)
select @s = @s +'----'
select @s
--cha所附撒r_Bin
declare @ varchar(100),@s varchar(100)
select @='char_Bin'
select @s=cast(cast(@ as binary(100)) as varchar(100))
select @s = left(@s,charindex(0x00,cast(@s as varbinary))-1)
select @s = @s +'----'
select @s
--char_Bin----
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。