【发布时间】:2020-11-05 04:02:37
【问题描述】:
我正在使用 MS SQL Server 2014。我有一个包含字符串(分配给字段 CAR)的表,如下所示:
ORANGE 1 FORD FIESTA;PETROL
RED 24 FORD MUSTANG; PETROL
BLACK 2 NISSAN JUKE; DIESEL
但是,我需要提取从第二个空格 ' ' 到第一个分号的所有内容;如下所示:
FORD FIESTA
FORD MUSTANG
NISSAN JUKE
这是我的 SQL:
SELECT SUBSTRING(CAR, CHARINDEX(' ', CAR) , CHARINDEX(';',CAR) - CHARINDEX(' ', CAR) + Len(';'))
FROM tblStock;
但是,这给了我以下信息:
1 FORD FIESTA;
24 FORD MUSTANG;
2 NISSAN JUKE;
我哪里错了?
【问题讨论】:
-
您应该在将数据 存储到数据库之前对其进行清理。在文本处理方面,一般的 SQL 和特别是 T-SQL 是非常弱的。用于查询、过滤的数据应存储在单独的列中。如果您有只是偶尔使用的数据,您可以将其存储为 JSON 或 XML,并使用例如 JSON_VALUE 来提取特定字段
-
@PanagiotisKanavos 很欣赏你所说的,但这是来自第 3 方系统,我无法控制,只能从 执行只读选择
标签: sql-server string tsql substring