当前位置: 首页 > 面试题库 >

在SELECT语句中的分隔值右侧提取字符

韩明德
2023-03-14
问题内容

我需要提取连字符右边的所有字符作为select语句的一部分。选择中将有其他列。在下面的查询中,从第二列中选择了右边的三个字符。我如何提取定界符右边的不定数量的字符(在我的情况下为连字符)?我可以使用正确的功能吗?我需要使用其他功能吗?

Select column1, right(column2,3) as extracted, column3
From myTable

我正在使用SQL Server 2008。


问题答案:

这个问题有一个特定于数据库的答案。

如果使用SQL Server:

SELECT column1
     , RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) as extracted
     , column3 
FROM myTable

您可以添加CASE语句或NULLIF()在连字符不总是出现的情况下使用:

SELECT column1
     , CASE WHEN column2 LIKE '%-%' THEN RIGHT(column2,CHARINDEX('-',REVERSE(column2))-1) 
           END as extracted
     , column3 
FROM myTable

或者:

SELECT column1
     , RIGHT(column2,NULLIF(CHARINDEX('-',REVERSE(column2)),0)-1) as extracted
     , column3 
FROM myTable

如果使用MySQL,请更改CHARINDEX()LOCATE()。我相信它是Oracle,INSTR()并且前两个参数已切换,首先是您要搜索的字符串,然后是您要搜索的字符串。



 类似资料:
  • 问题内容: 这个问题源于-其他解包概述,据我所知,它存在于Python 3.5中(并且没有反向移植到)。具体来说,在“ 缺点 ”部分中,注意以下几点: 虽然原因是一, ,原因是一个。这样做的原因可能会使不熟悉该结构的人感到困惑。 对于第一种情况,确实确实存在: 在第二种情况下,创建了: 不熟悉这个概念,我很困惑。谁能解释这种行为?加星标的表情是否会根据其所在的侧面而有所不同? 问题答案: 当还考虑

  • 本文向大家介绍MySQL select语句从字符串左侧获取5个字符,包括了MySQL select语句从字符串左侧获取5个字符的使用技巧和注意事项,需要的朋友参考一下 要从字符串的左侧获取字符数,请在MySQL中使用LEFT方法。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是从字符串左侧获取5个字符的SELECT- 这

  • 问题内容: 有我的问题,我有一个像这样的表: 当我创建表时,默认情况下排名为0,而我想要的是使用以下选择来更新表中的排名: 这个Select工作正常,但是我找不到使用它来更新table1的方法 我没有找到任何答案可以解决这种问题。如果有人可以给我任何有关是否可行的建议,我将不胜感激。 谢谢! 问题答案: 您可以加入 子查询 并执行 UPDATE : 在谓词中添加所需条件。 或者, 您可以使用 ME

  • 问题内容: 我正在尝试从select语句返回一个值。它唯一的一个值,因为我要返回的值来自主键列。 SQL语句是 我获取价值的方法如下: 我也有方法。 这是即时通讯用来调用该方法的内容: 上面的代码是为 现在,因为我得到一个“ ” ..我不知道这是怎么回事..但是我假设ResultSet在这里是错误的选择。 我的问题是..我在那可以使用什么呢? 任何关于我做错了什么的帮助或线索都将受到赞赏。 问题答

  • 我有一个java应用程序,它执行用户在UI上输入的SQL select语句。应用程序获取元数据以了解列类型: 一旦我得到结果集,对于每一行,我循环遍历列以了解类型。根据类型,我使用getInt()、getDate()或getString()获得值。 问题是,在某些情况下,select有一个很大的SUM(),当我执行getInt()时会出现一个数字溢出(我从JDBC驱动程序得到一个错误,在我的例子中

  • 问题内容: 我知道从存储的过程中返回标量值的首选方法是使用或参数。但可以说我有一个存储的proc,它使用select语句返回值: 是否有可能从另一个存储的过程中获取此值? 澄清: 我需要一个不需要使用参数或使用返回值的解决方案。 提前致谢。 问题答案: 您可以使用insert- exec 将存储过程的结果存储在表中: 该表的定义必须与存储过程的结果集匹配。