表a中有一字段number
数据类型为float,长度为8
如何删掉以8686开头的所有数据还是表a
a中字段number,数据类型为float,长度为8
如下所示:
number
8613562353442
13474672644
就是说有的数据前有86,有的没有,如何在没有的前加上86,有的话就不变。
如上:
number
8613562353442
8613474672644马上结帖
谢谢
数据类型为float,长度为8
如何删掉以8686开头的所有数据还是表a
a中字段number,数据类型为float,长度为8
如下所示:
number
8613562353442
13474672644
就是说有的数据前有86,有的没有,如何在没有的前加上86,有的话就不变。
如上:
number
8613562353442
8613474672644马上结帖
谢谢
delete from tb where [number] like '8686%'
2
update tb set [number]=cast('86' + rtrim(cast([number]as char(20))) as int) where not [number] like'86%'
删不掉
如果数据类型为nvarchar就可以
delete from A where rtrim(number) like '8686%'update A set number=cast('86'+rtrim(number) as float) where rtrim(number) not like '8686%'
where ltrim(str(number)) not like '86%'
还是没有删除掉以8686开头的所有数据
xiexie
Delete From TableName Where Left(Convert(Varchar,number,1),5)='8.686'
语句应该没有问题了!
---------------------
應該加兩個字,“才怪”。 你看看樓主的數據類型,這個是比較特殊的。你們都沒有做過測試就貼出語句,語句沒有一個是正確的。Delete還好,沒有刪除任何數據。但是Update不但沒有得到樓主要的結果,反而破壞了別人的數據。各位,回答問題時,能不能謹慎點,不要隨便就把語句貼上標簽來。
第二个:我把number数据类型改为nvarchar,这个sql语句怎么写?刚才那个加86长度溢出了。
a中字段number,如下所示:
number
8613562353442
13474672644
就是说有的数据前有86,有的没有,如何在没有的前加上86,有的话就不变。
如上:
number
8613562353442
8613474672644谢谢各位老大了
(number Float)
Insert TEST Select 8613562353442
Union All Select 13474672644
Union All Select 868613474672644
GO
--刪除的方法一:
Delete From TEST Where Left(Convert(Varchar,number,1),5)='8.686'
--刪除的方法二:
Delete From TEST Where Left(Cast(Cast(number As BigInt) As Varchar),4)='8686'
--更新
Update TEST Set number='86'+Cast(Cast(number As BigInt) As Varchar) Where Left(Cast(Cast(number As BigInt) As Varchar),2)<>'86'Select * From TEST
Go
Drop Table TEST
--Result
/*
Number
8613562353442.0
8613474672644.0
*/
sql server2000将数据类型nvarchar转换bigint出错怎么回事?
语句是没有问题的,至于为什么删不到,我想可能是楼主数据的问题.楼主表中可能没有主健, 有重复数据,健信息不足,SQL无法区分.不知道是不是这么回事.
---------------------------
肯定是語句的問題,你自己建表測試下就知道了。因為類型很特殊,樓主采用的是float。這個也是樓主設計表表結構不合理的地方,采用字符型應該更理想。
先看這個語句有沒有錯誤Select *From TableName Where Left(Cast(Cast(number As BigInt) As Varchar),2)<>'86'
尤其是paoluo(一天到晚游泳的鱼)
谢谢
as
declare @a varchar(20)
begin
declare cursor_update cursor for select * from c
open cursor_update
fetch next from cursor_update into @a
while @@fetch_status = 0
begin
if exists(select number from c where number=@a and left(number,2)<>'86')
update c set number='86'+ number where number =@a
fetch next from cursor_update into @a
end close cursor_update
deallocate cursor_update
end