写一条SQL语句,判断字段值

hbhuo2008 2008-02-24 11:36:49
表:ACTION
字段:
ACTION_ID
ACTION
USERS
DATE
表的记录:
ACTION_ID ACTION USERS DATE
001 登录工作站<200a> 陈明 2008-02-23 10:00:00
001 删除文件030303 陈明 2008-02-23 10:10:00
001 退出工作站<200a> 陈明 2008-02-23 10:45:00
002 登录工作站<210a> 张章 2008-02-23 10:20:20
002 退出工作站<210a> 张章 2008-02-23 10:40:12

用户陈明登录200a的工作站删除文件0300303后退出
用户张章登录退出210a的工作站的记录

问题:
添加记录要判断出该记录的房间号及是登录还是退出?

该SQL语句要什么写,麻烦大虾了!

...全文
185 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbhuo2008 2008-02-27
  • 打赏
  • 举报
回复
谢谢--无枪狙击手--
-狙击手- 2008-02-25
  • 打赏
  • 举报
回复
或者

create table [ACTION]
(ACTION_ID varchar(10),[ACTION] varchar(20), USERS varchar(10),[DATE] datetime)
insert [action] select
'001','登录工作站 <200a>','陈明','2008-02-23 10:00:00' union select
'001','删除文件030303','陈明','2008-02-23 10:10:00' union select
'001','退出工作站 <200a>','陈明','2008-02-23 10:45:00' union select
'002','登录工作站 <210a>','张章','2008-02-23 10:20:20' union select
'002','退出工作站 <210a>','张章','2008-02-23 10:40:12'

go


select replace(stuff([action],1,charindex('<',[action]),''),'>','')
from [action]
where charindex('<',[action])> 0

drop table action

/*

--------
200a
200a
210a
210a

(所影响的行数为 4 行)

*/
-狙击手- 2008-02-25
  • 打赏
  • 举报
回复
create table [ACTION]
(ACTION_ID varchar(10),[ACTION] varchar(20), USERS varchar(10),[DATE] datetime)
insert [action] select
'001','登录工作站 <200a>','陈明','2008-02-23 10:00:00' union select
'001','删除文件030303','陈明','2008-02-23 10:10:00' union select
'001','退出工作站 <200a>','陈明','2008-02-23 10:45:00' union select
'002','登录工作站 <210a>','张章','2008-02-23 10:20:20' union select
'002','退出工作站 <210a>','张章','2008-02-23 10:40:12'

go


select left(stuff([action],1,charindex('<',[action]),'') ,4)
from [action]
where charindex('<',[action])> 0

drop table action

/*

--------
200a
200a
210a
210a

(所影响的行数为 4 行)

*/
hbhuo2008 2008-02-25
  • 打赏
  • 举报
回复
什么提取尖括号中的216a
hbhuo2008 2008-02-25
  • 打赏
  • 举报
回复
003 登录工作站<216a> 李三 2008-02-24 12:45:00

什么算出该记录是216a房间的记录。
hbhuo2008 2008-02-25
  • 打赏
  • 举报
回复
就是求一条记录ACTION字段的尖括号中的数据

不知道能不能写出,
dawugui 2008-02-25
  • 打赏
  • 举报
回复
说实话,真没看明白.只有帮顶了.
-狙击手- 2008-02-25
  • 打赏
  • 举报
回复
还是不太明白
hbhuo2008 2008-02-25
  • 打赏
  • 举报
回复
就求房间号
hbhuo2008 2008-02-25
  • 打赏
  • 举报
回复
表的记录应该是:

ACTION_ID ACTION USERS DATE
001 登录工作站 <200a> 陈明 2008-02-23 10:00:00
001 删除文件030303a 陈明 2008-02-23 10:10:00
002 登录工作站 <210a> 张章 2008-02-23 10:20:20
002 退出工作站 <210a> 张章 2008-02-23 10:40:12
001 退出工作站 <200a> 陈明 2008-02-23 10:45:00

删除的文件后面带的数据有可能跟房间号一致。

-狙击手- 2008-02-25
  • 打赏
  • 举报
回复
房间号 ??
-狙击手- 2008-02-25
  • 打赏
  • 举报
回复
create table [ACTION]
(ACTION_ID varchar(10),[ACTION] varchar(40), USERS varchar(10),[DATE] datetime)
insert [action] select
'001','登录工作站 <200a>','陈明','2008-02-23 10:00:00' union select
'001','删除文件030303','陈明','2008-02-23 10:10:00' union select
'001','退出工作站 <200a>','陈明','2008-02-23 10:45:00' union select
'002','登录工作站 <210a>','张章','2008-02-23 10:20:20' union select
'002','退出工作站 <210a>','张章','2008-02-23 10:40:12' union select
'003','登录工作站:在 <2106a> 上','李三','2008-02-24 12:45:00'
go


select stuff(stuff([action],charindex('>',[action])-1,100,''),1,charindex('<',[action]),'')
from [action]
where charindex('<',[action])> 0

drop table action

/*

--------
200
200
210
210
2106

(所影响的行数为 5 行)

*/
hbhuo2008 2008-02-25
  • 打赏
  • 举报
回复
记录如果是下面这样的情况 SQL语句要什么修改?


003 登录工作站:在<2106a>上 李三 2008-02-24 12:45:00

房间也有21楼的,也就是2106
如果就要2106不要a呢?

如:
210
230
2106


dawugui 2008-02-24
  • 打赏
  • 举报
回复
问题描述不清楚.

要求结果是什么?

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧