SQL 继续

gagaxiaoyuer 2008-03-14 09:39:56
db mk tq
DDZ023113 00023113 20000000
TDL012333 00012333 20000000
DDZ011111 00011111 20000000


SELECT * FROM TEXT WHERE RIGHT(db,6)!=RIGHT(mk,6)
查出来是相同的不相同的多出来拉
...全文
153 点赞 收藏 26
写回复
26 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
gagaxiaoyuer 2008-03-14
谢谢啊 梁哥 因为比较急 我只想要到答案 所以没去想 只拿去测试拉
回复
liangCK 2008-03-14
[Quote=引用 22 楼 gagaxiaoyuer 的回复:]
create table tb1(ID nchar(10) , ID_O nchar(10))
insert into tb1 values('DDZ023123' , '00023123')
insert into tb1 values('DDZ018218' , '00222222')
insert into tb1 values('TDL038777' , '00838777')
insert into tb1 values('TDL038666' , '00999999')
insert into tb1 values('TDL038666' , '00888666')
insert into tb1 values('DDZ018218' , '00018218')

SELECT *
FROM TB1 A
WHERE NO…
[/Quote]

你现在是ID跟ID_O比较还是ID跟ID比较?
回复
liangCK 2008-03-14
[code=SQL]create table tb1(ID nchar(10) , ID_O nchar(10)) 
insert into tb1 values('TDL010562' , '00000462')
insert into tb1 values('TDL010261' , '00000161')
insert into tb1 values('TDL018009' , '00000285')
insert into tb1 values('TDL019801' , '00819801')
insert into tb1 values('TDL023074' , '00823074')
insert into tb1 values('TDL022889' , '00822889')

SELECT *
FROM TB1 A
WHERE NOT EXISTS
(SELECT * FROM TB1 B WHERE RIGHT(RTRIM(CAST(B.ID_O AS NVARCHAR)),6)=RIGHT(RTRIM(CAST(A.ID AS NVARCHAR)),6))


drop table tb1


/*
ID ID_O
---------- ----------
TDL010562 00000462
TDL010261 00000161
TDL018009 00000285
TDL019801 00819801
TDL023074 00823074
TDL022889 00822889

(6 行受影响)
*/


--建议你动动手,也动动脑..这些数据ID跟ID_O没有对应的.当然是全出来了.[/code]
回复
gagaxiaoyuer 2008-03-14
create table tb1(ID nchar(10) , ID_O nchar(10))
insert into tb1 values('DDZ023123' , '00023123')
insert into tb1 values('DDZ018218' , '00222222')
insert into tb1 values('TDL038777' , '00838777')
insert into tb1 values('TDL038666' , '00999999')
insert into tb1 values('TDL038666' , '00888666')
insert into tb1 values('DDZ018218' , '00018218')

SELECT *
FROM TB1 A
WHERE NOT EXISTS
(SELECT * FROM TB1 B WHERE RIGHT(RTRIM(CAST(B.ID_O AS NVARCHAR)),6)=RIGHT(RTRIM(CAST(A.ID AS NVARCHAR)),6))

drop table tb1

/*
ID ID_O
---------- ----------
TDL038777 00838777
TDL038666 00999999
TDL038666 00888666

(3 行受影响)
*/


第二行也应该出来的
回复
gagaxiaoyuer 2008-03-14
先谢谢拉 我都把数据导如另一个表拉 都不行 !!!

TDL010562 00000462
TDL010261 00000161
TDL018009 00000285
TDL019801 00819801
TDL023074 00823074
TDL022889 00822889 这些都出不来!!
回复
liangCK 2008-03-14
我测试可以.
回复
gagaxiaoyuer 2008-03-14
我看看 还是不行
回复
liangCK 2008-03-14
上面不是写了吗?
回复
gagaxiaoyuer 2008-03-14
SELECT FMTR_ID,FGENERAL_NO,FCONCENTRATOR_NO FROM POWER_METER
WHERE
right(RTRIM(LTRIM(FMTR_ID,6)))!=right(RTRIM(LTRIM(FGENERAL_NO,6))) 你可以帮我写下这个吗 去左右空格
回复
liangCK 2008-03-14
create table tb1(ID nchar(10) , ID_O nchar(10)) 
insert into tb1 values('DDZ023123' , '00023123')
insert into tb1 values('DDZ018218' , '00222222')
insert into tb1 values('TDL038777' , '00838777')
insert into tb1 values('TDL038666' , '00999999')
insert into tb1 values('TDL038666' , '00888666')
insert into tb1 values('DDZ018218' , '00018218')

SELECT *
FROM TB1 A
WHERE NOT EXISTS
(SELECT * FROM TB1 B WHERE RIGHT(RTRIM(CAST(B.ID_O AS NVARCHAR)),6)=RIGHT(RTRIM(CAST(A.ID AS NVARCHAR)),6))

drop table tb1

/*
ID ID_O
---------- ----------
TDL038777 00838777
TDL038666 00999999
TDL038666 00888666

(3 行受影响)
*/
回复
gagaxiaoyuer 2008-03-14
怎么写 帮我写下
回复
liangCK 2008-03-14
转一下类型呗.
回复
flairsky 2008-03-14
nchar字符数都固定了
你怎么知道后六位是什么?

肯定要用varchar
回复
gagaxiaoyuer 2008-03-14
VARCHAR 可以 但是我的是 NCHAR 有什么方法可以不用改 因为是别人的数据库
回复
gagaxiaoyuer 2008-03-14
drop table tb1
create table tb1(ID nchar(10) , ID_O nchar(10))
insert into tb1 values('DDZ023123' , '00023123')
insert into tb1 values('DDZ018218' , '00222222')
insert into tb1 values('TDL038777' , '00838777')
insert into tb1 values('TDL038666' , '00999999')
insert into tb1 values('TDL038666' , '00888666')
insert into tb1 values('DDZ018218' , '00018218')

SELECT * FROM TB1 WHERE right(ID,6)<>right (ID_O,6) 我的类型是 nchar 我的是varchar
回复
liangCK 2008-03-14
declare @T table (db varchar(10),mk varchar(10),tq varchar(10))
insert @t select 'DDZ023113' , '00023113' , '20000000'
insert @t select 'TDL012333' , '00012333' , '20000000'
insert @t select 'DDZ011111' , '00011111' , '20000000'
insert @t select 'DDZ012222' , '34455322' , '20000000'

select *
from @T a
where not exists(select 1 from @T where right(mk,6)=right(a.db,6))

/*
db mk tq
---------- ---------- ----------
DDZ012222 34455322 20000000

(1 行受影响)
*/
回复
gagaxiaoyuer 2008-03-14
都没用 相同不相同的都出来拉
回复
dawugui 2008-03-14
SELECT * FROM [TEXT] WHERE RIGHT(db,6)<> RIGHT(mk,6) 
回复
liangCK 2008-03-14
select *
from text a
where not exists(select 1 from text where right(mk,6)=right(a.db,6))
回复
liangCK 2008-03-14
回复
加载更多回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-03-14 09:39
社区公告
暂无公告