把表A字段A1的内容导到表B字段B1,通过userid关联.
A1为varchar(16),B1为varchar(10).
通过left(A1,10),如果这10位里有汉字,则left(A1,10)产生的宽度就>10,导表将失败.如果用left(A1,5)产生的宽度<=10,但这样丢失太多,很多时候字段放的都无汉字.
假如要写个leftofmine(A1,10),组合产生的宽度是10,应该怎么写,或者有什么别的办法么.表很多,规定不可更改为字段类型为nvarchar.
A1为varchar(16),B1为varchar(10).
通过left(A1,10),如果这10位里有汉字,则left(A1,10)产生的宽度就>10,导表将失败.如果用left(A1,5)产生的宽度<=10,但这样丢失太多,很多时候字段放的都无汉字.
假如要写个leftofmine(A1,10),组合产生的宽度是10,应该怎么写,或者有什么别的办法么.表很多,规定不可更改为字段类型为nvarchar.
解决方案 »
- 问一个SQL查询问题
- SQL语句 UNIQUE 意思
- 在线等,按照ID出现的次数进行排序
- 使用ADO.NET连接MS SQL Server出现无法解决的[DENETLIB][Connectionopen (Connect()).]SQL Server 不存在或拒绝访问
- 微软的SQL Server里怎么使用“自动编号”这种数据类型。
- 一个数据库优化的问题
- 关于存储过程
- 日期字段为char(10),如何转换成日期型,然后作为条件被筛选
- 批量插入数据,但插入触发器只执行了一次,请问是什么问题?
- 请教,表a数据量太大,而我平时只查询5天内的数据,请问怎么提高查询效率?
- 几句话的存储过程执行出错,请问何解?在线等待,谢谢
- 如何还原数据库
B1永远只可以接受A1一半长度的数据。
select len('问题'),datalength('问题')分别返回2和4
DATALENGTH
返回任何表达式所占用的字节数。
目标表库是客户方面的,666个表,改一则禁止,二则太多.
datalength()能知道长度,但现在是要拼接出尽可能的字,即合起来的要么10-1,要么10.
难啊,库就2.6G了.
如果自己写个自定义函数,需要逐字判断来拼接,即使写出来了,肯定速度太慢.
希望大家再提些建设性意见.
--無非是left(B1,5) 到 left(B1,10) 六種情況而已
--try:
create table t1 (id int,name varchar(16))
insert into t1 select 1,'1234567890123456'
insert into t1 select 2,'臥室時的時間3213'
insert into t1 select 3,'我怎12打43135643'
insert into t1 select 4 ,'唉的安德14325678'
insert into t1 select 5 ,'143'create table t2(id int,name varchar(10))
insert into t2 (id) select 1 union select 2 union select 3 union select 4 union select 5update t2
set name=case when datalength(left(t1.name,10))<=10 then left(t1.name,10)
else case when datalength(left(t1.name,9))<=10 then left(t1.name,9)
else case when datalength(left(t1.name,8))<=10 then left(t1.name,8)
else case when datalength(left(t1.name,7))<=10 then left(t1.name,7)
else case when datalength(left(t1.name,6))<=10 then left(t1.name,6)
else left(t1.name,5)
end
end
end
end
end
from t1
where t1.id=t2.idselect * from t2drop table t1,t2/*
id name
----------- ----------
1 1234567890
2 臥室時的時
3 我怎12打43
4 唉的安德14
5 143
*/