【问题标题】:How to remove everything after certain character in SQL?如何删除 SQL 中某个字符后的所有内容?
【发布时间】:2014-04-28 19:11:44
【问题描述】:

我有一个 400 行以上的列表。每行看起来都与此类似:example-example123 我想删除“-”之后的所有内容,这样我只剩下开始部分:example123 任何帮助将不胜感激。

【问题讨论】:

标签: removeall


【解决方案1】:

假设您需要在查询中执行此操作,您可以使用数据库的字符串函数。 对于 DB2,这看起来像

select SUBSTR(YOURCOLUMN, 1, LOCATE('-',YOURCOLUMN)) from YOURTABLE where ...

在 SQL Server 中你可以使用

SUBSTRING

CHARINDEX

【讨论】:

    【解决方案2】:

    试试这样:

    UPDATE table SET column_name=LEFT(column_name, INSTR(column_name, '-')-1) 
    WHERE INSTR(column_name, '-')>0;
    

    如果你只想选择你这样做:

    SELECT LEFT(column_name, INSTR(column_name, '-')-1) FROM table;
    

    INSTR 函数获取- 的位置,然后将列值更新为从字符串的第一个字母到- -1 的位置

    这是fiddle

    【讨论】:

      【解决方案3】:

      你可以使用 SQL Trim() 函数

      选择修剪(尾随'-'来自 BHEXLIVESQLVS1-LIVE61MSSQL)
      作为 TRAILING_TRIM
      FROM 表;

      结果应该是“BHEXLIVESQLVS1”

      【讨论】:

        【解决方案4】:
        select SUBSTRING(col_name,0,Charindex ('-',col_name))
        

        【讨论】:

          【解决方案5】:

          对于 SQL server 你可以这样做,

          LEFT(columnName, charindex('-', columnName)) 删除 '-' 之后的每个字符

          要同时删除特殊字符,

          LEFT(columnName, charindex('-', columnName)-1)
          

          【讨论】:

            【解决方案6】:

            SELECT SUBSTRING(col_name,0,Charindex ('-',col_name)) FROM table_name WHERE col_name='你的价值'

            例如。

            SELECT SUBSTRING(TPBS_Path,0,Charindex ('->',TPBS_Path)) FROM [CFG].[CFG_T_Project_Breakdown_Structure] WHERE TPBS_Parent_PBS_Code='LE180404'

            这里 TPBS_Path 是要进行修剪的列,[CFG].[CFG_T_Project_Breakdown_Structure] 是表名,TPBS_Parent_PBS_Code='LE180404' 是选择条件。 '->' 之后的所有内容都将被修剪

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-08-03
              • 1970-01-01
              • 1970-01-01
              • 2017-08-26
              • 2018-12-09
              • 2020-07-19
              • 2018-04-03
              • 1970-01-01
              相关资源
              最近更新 更多