我有一个400行+的列表。每一行看起来都与此类似:example-example123我想删除过去的所有内容' - '所以我只留下了开头部分:example123 任何帮助将不胜感激。
答案 0 :(得分: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
答案 1 :(得分:2)
您可以使用SQL Trim()函数
SELECT TRIM(TRAILING' - '来自BHEXLIVESQLVS1-LIVE61MSSQL)
作为TRAILING_TRIM
FROM table;
结果应为“BHEXLIVESQLVS1”
答案 2 :(得分:1)
假设您需要在查询中执行此操作,则可以使用数据库的字符串函数。 对于DB2,这看起来像
select SUBSTR(YOURCOLUMN, 1, LOCATE('-',YOURCOLUMN)) from YOURTABLE where ...
在SQL Server中,您可以使用
SUBSTRING
和
CHARINDEX
答案 3 :(得分:1)
select SUBSTRING(col_name,0,Charindex ('-',col_name))
答案 4 :(得分:1)
SELECT SUBSTRING(col_name,0,Charindex ('-',col_name)) FROM table_name WHERE col_name='yourvalue'
例如
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' 是选择条件。 '->' 之后的所有内容都将被修剪
答案 5 :(得分:0)
对于SQL Server,您可以执行此操作
LEFT(columnName, charindex('-', columnName))
删除'-'之后的每个字符
也要删除特殊字符,
LEFT(columnName, charindex('-', columnName)-1)