文本字段内容如下,请问如何通过语句或函数提取[]中的字符?谢谢大家!原字段内容 想得到的内容
C-马鞍山-市区-导航处[9] 9
B-马鞍山-市区-网络大学[87] 87
C-马鞍山-当涂县-新桥宁西[335] 335
C-马鞍山-市区-导航处[9] 9
B-马鞍山-市区-网络大学[87] 87
C-马鞍山-当涂县-新桥宁西[335] 335
from tb
---------------------------------
-- Author: htl258(Tony)
-- Date : 2009-08-12 14:05:54
---------------------------------
--> 生成测试数据表:tbIf not object_id('[tb]') is null
Drop table [tb]
Go
Create table [tb]([原字段内容] nvarchar(19))
Insert tb
Select 'C-马鞍山-市区-导航处[9]' union all
Select 'B-马鞍山-市区-网络大学[87]' union all
Select 'C-马鞍山-当涂县-新桥宁西[335]'
Go
--Select * from tb-->SQL查询如下:
select *,想得到的内容=replace(stuff([原字段内容],1,charindex('[',[原字段内容]),''),']','') from tb
/*
原字段内容 想得到的内容
------------------- ---------------------------------------
C-马鞍山-市区-导航处[9] 9
B-马鞍山-市区-网络大学[87] 87
C-马鞍山-当涂县-新桥宁西[335] 335(3 行受影响)
*/
from tb
-- Author :fredrickhu(小F 向高手学习)
-- Date :2009-08-12 14:12:54
----------------------------------------------------------------
--> 测试数据:[原字段内容]
if object_id('[原字段内容]') is not null drop table [原字段内容]
go
create table [原字段内容]([col1] varchar(29))
insert [原字段内容]
select 'C-马鞍山-市区-导航处[9]' union all
select 'B-马鞍山-市区-网络大学[87]' union all
select 'C-马鞍山-当涂县-新桥宁西[335]'
--------------开始查询--------------------------
select
想得到的内容=substring(col1,charindex('[',col1)+1,charindex(']',col1)-charindex('[',col1)-1)
from
原字段内容
----------------结果----------------------------
/*想得到的内容
-----------------------------
9
87
335(所影响的行数为 3 行)*/
-- Author :fredrickhu(小F 向高手学习)
-- Date :2009-08-12 14:12:54
----------------------------------------------------------------
--> 测试数据:[原字段内容]
if object_id('[原字段内容]') is not null drop table [原字段内容]
go
create table [原字段内容]([col1] varchar(29))
insert [原字段内容]
select 'C-马鞍山-市区-导航处[9]' union all
select 'B-马鞍山-市区-网络大学[87]' union all
select 'C-马鞍山-当涂县-新桥宁西[335]'
--------------开始查询--------------------------
select
想得到的内容=substring(col1,charindex('[',col1)+1,charindex(']',col1)-charindex('[',col1)-1)
from
原字段内容
----------------结果----------------------------
/*想得到的内容
-----------------------------
9
87
335(所影响的行数为 3 行)*/
GO
INSERT INTO # SELECT 'C-马鞍山-市区-导航处[9]'
UNION ALL SELECT 'B-马鞍山-市区-网络大学[87]'
UNION ALL SELECT 'C-马鞍山-当涂县-新桥宁西[335]'
SELECT SUBSTRING(CAST(TEST AS VARCHAR(MAX)),CHARINDEX('[',TEST)+1,CHARINDEX(']',TEST)-CHARINDEX('[',TEST)-1) FROM #/*
9
87
335
*/