declare @t table(a varchar(30)) insert into @t select '哈哈哈哈哈哈哈哈哈哈' insert into @t select '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈' insert into @t select '哈哈哈哈哈哈' insert into @t select 'aaaaaaaaaaaaaaaaaaaa' insert into @t select '11111111111111111111' insert into @t select '111111111111111111111111111'select * from @t where datalength(a)=20
left(字段,20)---这是取出20个字符declare @t table(a varchar(30)) insert into @t select '哈哈哈哈哈哈哈哈哈哈' insert into @t select '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈' insert into @t select '哈哈哈哈哈哈' insert into @t select 'aaaaaaaaaaaaaaaaaaaa' insert into @t select '11111111111111111111' insert into @t select '111111111111111111111111111'select * from @t where datalength(a)=20---这只能取文该字段是20的数据,我是要截取10个汉字 或着是20个英文字母或数字
declare @t table(a varchar(30)) insert into @t select '哈哈哈哈哈哈哈哈哈哈' insert into @t select '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈' insert into @t select '哈哈哈哈哈哈' insert into @t select 'aaaaaaaaaaaaaaaaaaaa' insert into @t select '11111111111111111111' insert into @t select '111111111111111111111111111'select left(convert(binary(16),a),20) from @t
declare @t table(a varchar(30)) insert into @t select '哈哈哈哈哈哈哈哈哈哈' insert into @t select '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈' insert into @t select '哈哈哈哈哈哈' insert into @t select 'aaaaaaaaaaaaaaaaaaaa' insert into @t select '11111111111111111111' insert into @t select '111111111111111111111111111'select left(convert(binary(20),a),20)
declare @t table(a varchar(30)) insert into @t select '哈哈哈哈哈哈哈哈哈哈' insert into @t select '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈' insert into @t select '哈哈哈哈哈哈' insert into @t select 'aaaaaaaaaaaaaaaaaaaa' insert into @t select '11111111111111111111' insert into @t select '111111111111111111111111111'select left(convert(binary(20),a),20) from @t
对于Unicode来说,一个英文字符一个字节;一个中文字符两个字节;其他国家的字符,好像有一个字符6个字节的。select convert(varchar(20),a) from @t 难道楼主的意思是:对于 哈哈哈11221aaaaa 这样的字符串也选出单一的类型么?? 那我觉得就只能用Unicode判断了。并且要注意全角和半角
insert into @t select '哈哈哈哈哈哈哈哈哈哈'
insert into @t select '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈'
insert into @t select '哈哈哈哈哈哈'
insert into @t select 'aaaaaaaaaaaaaaaaaaaa'
insert into @t select '11111111111111111111'
insert into @t select '111111111111111111111111111'select * from @t where datalength(a)=20
insert into @t select '哈哈哈哈哈哈哈哈哈哈'
insert into @t select '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈'
insert into @t select '哈哈哈哈哈哈'
insert into @t select 'aaaaaaaaaaaaaaaaaaaa'
insert into @t select '11111111111111111111'
insert into @t select '111111111111111111111111111'select * from @t where datalength(a)=20---这只能取文该字段是20的数据,我是要截取10个汉字 或着是20个英文字母或数字
insert into @t select '哈哈哈哈哈哈哈哈哈哈'
insert into @t select '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈'
insert into @t select '哈哈哈哈哈哈'
insert into @t select 'aaaaaaaaaaaaaaaaaaaa'
insert into @t select '11111111111111111111'
insert into @t select '111111111111111111111111111'select left(convert(binary(16),a),20) from @t
declare @t table(a varchar(30))
insert into @t select '哈哈哈哈哈哈哈哈哈哈'
insert into @t select '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈'
insert into @t select '哈哈哈哈哈哈'
insert into @t select 'aaaaaaaaaaaaaaaaaaaa'
insert into @t select '11111111111111111111'
insert into @t select '111111111111111111111111111'select left(convert(binary(20),a),20)
insert into @t select '哈哈哈哈哈哈哈哈哈哈'
insert into @t select '哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈'
insert into @t select '哈哈哈哈哈哈'
insert into @t select 'aaaaaaaaaaaaaaaaaaaa'
insert into @t select '11111111111111111111'
insert into @t select '111111111111111111111111111'select left(convert(binary(20),a),20) from @t
那我觉得就只能用Unicode判断了。并且要注意全角和半角