【发布时间】:2010-10-02 09:18:12
【问题描述】:
我在 SQL 表中有一个列,其中包含如下数据:
“学院:皇后镇学院”或“大学:昆士兰大学”
":" 之前的文本可能不同。那么,如何从列中仅选择 ":" 之前的文本和 ":(space)" 之后的文本?
【问题讨论】:
标签: sql sql-server split
我在 SQL 表中有一个列,其中包含如下数据:
“学院:皇后镇学院”或“大学:昆士兰大学”
":" 之前的文本可能不同。那么,如何从列中仅选择 ":" 之前的文本和 ":(space)" 之后的文本?
【问题讨论】:
标签: sql sql-server split
您可能应该考虑将表放入first normal form,而不是在同一列中存储 2 条数据...
;with yourtable as
(
select 'College: Queenstown College' as col UNION ALL
select 'University: University of Queensland'
)
select
left(col,charindex(': ',col)-1) AS InstitutionType,
substring(col, charindex(': ',col)+2, len(col)) AS InstitutionName
from yourtable
【讨论】:
使用charindex 和substring 函数:
substring(theField, 1, charindex(':', theField) - 1)
【讨论】: