首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >光标以获取所需的结果

光标以获取所需的结果
EN

Stack Overflow用户
提问于 2017-02-24 21:03:48
回答 3查看 39关注 0票数 1

我有一张这样的桌子:

代码语言:javascript
复制
x------x---------x----------------------x-------x
|  Id  |   ACCTNO  |   name2             |  QTY  |
x------x---------x----------------------x-------x
|   1  |   1     | here is 2014-01-13   |  10   |
|   1  |   2     | there are 2014-01-12  |  20   |
|   2  |   3     | 2014-01-08           |  40    |
|   2  |   4     | 2014-01-06           |  30    |
x------x---------x----------------------x-------x 

我在试着得到英文字母和日期的记录。

我试着这样做:

代码语言:javascript
复制
DECLARE @ACCTNO as INT;
DECLARE @name2 as varchar(max);
declare @st varchar(max)

DECLARE @BusinessCursor as CURSOR;


SET @BusinessCursor = CURSOR FOR
SELECT ACCTNO, Name2
FROM DPBENCHA2;

  OPEN @BusinessCursor;
   FETCH NEXT FROM @BusinessCursor INTO @ACCTNO, @name2;
    --PRINT  @Name2;

     WHILE @@FETCH_STATUS = 0
     BEGIN

     set @st = @Name2;
     select SUBSTRING(@st, patindex('%[0-9][0-9]/[0-9][0-9]/[0-9][0-9]%', @st), 50)
      PRINT @st;
     FETCH NEXT FROM @BusinessCursor INTO @ACCTNO,@st;
    END

   CLOSE @BusinessCursor;
   DEALLOCATE @BusinessCursor;

而不是获取包含英文字母和日期的记录。我要拿到所有的记录。如何解决这个问题?如何才能仅获取账号1和账号2的记录?有没有其他方法可以做到。

EN

回答 3

Stack Overflow用户

发布于 2017-02-24 21:11:47

我在试着得到记录,上面有英文字母和日期。

您似乎想要一个简单的查询:

代码语言:javascript
复制
SELECT ACCTNO, Name2
FROM DPBENCHA2
WHERE name2 LIKE '%[a-zA-Z]%';

这比游标简单得多。通常,您希望避免在SQL中使用游标。

编辑:

如果您想从Name2中提取日期

代码语言:javascript
复制
SELECT ACCTNO, Name2,
       SUBSTRING(name2,
                 PATINDEX('%[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]%'),
                 10) as thedate
FROM DPBENCHA2
WHERE name2 LIKE '%[a-zA-Z]%';
票数 5
EN

Stack Overflow用户

发布于 2017-02-24 21:12:44

按如下方式使用

代码语言:javascript
复制
SUBSTRING(@st, patindex('%[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]%', @st), 50)
票数 0
EN

Stack Overflow用户

发布于 2017-02-24 22:58:51

假设日期格式为yyyy-dd-mmyyyy-mm-dd,则可以使用简单的select

代码语言:javascript
复制
select * from DPBENCHA2 where  (name2 like '%[a-z]%')

 and name2 like '% [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]%'

请注意'%<space>[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]%'中的空格

这将确保'some alphabet 22323-12-34'不会包含在您的选择中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42439384

复制
相关文章

相似问题

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