【发布时间】:2018-01-30 10:42:48
【问题描述】:
我有一个关于 SQL Server 的问题。
我想在最后一个 IN 字符位置之前获取数据。
表Stringposition:
CREATE TABLE [dbo].[Stringposition]
(
[Name] [varchar](100) NULL
) ON [PRIMARY]
GO
INSERT [dbo].[Stringposition] ([Name])
VALUES (N'PN MAIN DOOR IN'), (N'PN PASSAGE IN'),
(N'INTestingIN'), (N'YENINFgh'), (N'inGENTRINin')
GO
期望输出数据如下:
Name
--------------
PN MAIN DOOR
PN PASSAGE
INTesting
YEN
inGENTRIN
我试过这个查询:
select
substring(name, 0, charindex('in', name, charindex('in', name) + 1)),
name
from
[dbo].[Stringposition]
但是这个查询没有返回预期的结果。
请告诉我如何编写查询以在 SQL Server 中完成此任务。
【问题讨论】:
-
旁注:由于您的列定义为
VARCHAR(100),因此它是一个非-Unicode 列。插入时,不得使用N'....'表示法 - 这会导致字符串文字被视为 Unicode - 然后必须将它们转换回 non-Unicode 以匹配数据类型。如果你使用VARCHAR,你应该使用INSERT INTO .. VALUES('abc');(没有N前缀!)
标签: sql-server string split