首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在sql查询结果中获取字符串的第一项和最后一项

如何在sql查询结果中获取字符串的第一项和最后一项
EN

Stack Overflow用户
提问于 2017-08-19 23:54:46
回答 3查看 301关注 0票数 5

我有一张员工进出日期和时间的日志表如下所示;

  • 2007年12月11日12:23 11/12/2007 21:22、11/12/2007 22:24
  • 2007年12月12日09:11 12/12/2007 11:34 .,12/12/2007 17:15
  • ...continues

项目的数量是不同的,所有条目都是以每日为基础的。由于入口处和出口记录的原因,最低入口额为2。

我只想从日志中获取开始日期和结束日期。关于T查询请帮我.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-20 00:14:04

如果使用Sqlserver 2005或更高版本,多次使用反向函数不利于性能,下面的代码更有效。

假设列名ise logdata和表名为logTable

代码语言:javascript
运行
复制
SELECT 
   SUBSTRING(logdata, 0, CHARINDEX(',', logdata)) AS FirstItem,
   SUBSTRING(logdata, (LEN(logdata) - CHARINDEX(',',REVERSE(logdata))+2), LEN(logdata)) AS LastItem
FROM logTable

您可以在此链接http://rextester.com/TRGHL10059中检查确切的解决方案。

票数 3
EN

Stack Overflow用户

发布于 2017-08-20 01:44:14

问题的另一个简单解决方案是使用左和右函数。

代码语言:javascript
运行
复制
DECLARE @str NVARCHAR(MAX)='11/12/2007 12:23,11/12/2007 21:22,11/12/2007 22:24'

选择左侧(@str,CHARINDEX(',',@str) -1),右(@str,CHARINDEX(',',反向(@str)) -1)

票数 4
EN

Stack Overflow用户

发布于 2017-08-20 00:22:49

实际上,由于所有的日期时间戳都是固定数量的字符,您可以使用像左-右函数这样简单的东西.(没有必要把事情复杂化).

代码语言:javascript
运行
复制
IF OBJECT_ID('tempdb..#MovementLog', 'U') IS NOT NULL
DROP TABLE #MovementLog;

CREATE TABLE #MovementLog (
    LogDate DATE NOT NULL,
    ClockTimeString VARCHAR(1000) NOT NULL 
    ); 

INSERT #MovementLog (LogDate, ClockTimeString) VALUES 
    ('2007-12-11', '11/12/2007 12:23,11/12/2007 21:22,11/12/2007 22:24'),
    ('2007-12-12', '12/12/2007 09:11,12/12/2007 11:34,12/12/2007 17:15');

--==============================================================================

SELECT 
    ml.LogDate,
    BegDTStamp = LEFT(ml.ClockTimeString, 16),
    EndDTStamp = RIGHT(ml.ClockTimeString, 16)
FROM 
    #MovementLog ml;

结果..。

代码语言:javascript
运行
复制
LogDate    BegDTStamp       EndDTStamp
---------- ---------------- ----------------
2007-12-11 11/12/2007 12:23 11/12/2007 22:24
2007-12-12 12/12/2007 09:11 12/12/2007 17:15
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45777274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档