MSSQL字段查询拆分:一种简单可行的方法(mssql字段查询拆分)
作为一个不想浪费数据库内存空间的资深程序员,有时我必须想办法拆分在MSSQL字段中存放的相关信息,以便向用户展示。例如,在一个表格中,某一字段会存放用户的兴趣爱好,可能有多个喜欢的兴趣爱好,比如:篮球、游泳、足球……这时,如果我使用一个字段来保存所有的兴趣爱好,会很不好,因为这样的话所占用的空间会比较大。
在这种情况下,MSSQL字段查询拆分就派上了用场,这种方法可以解决对空间的非常低效的使用问题。首先,把用户兴趣爱好从一个字段拆分并移动到一个表中,这个表会有一个唯一标识符,用来跟每一条记录连接起来。比如,有一个临时表:
CREATE TABLE #tmpUserHobby(
User_ID int,
HobbyName Varchar(20)
);
然后,使用MSSQL的游标拆分字段,把所有兴趣爱好放到临时表中:
Declare @String varchar(max);
Declare @Pos int;
Declare @HobbyName varchar(20);
Declare @UserID int;
SET @String=’篮球,游泳,足球’ — 从字段中去取出的值
SET @UserID=100 — 唯一标识符值
SET @Pos = CharIndex(‘,’, @String);
If @Pos > 0
Begin
WHILE @Pos > 0
Begin
SET @HobbyName = Substring(@String, 1, @Pos – 1);
Insert #tmpUserHobby(User_ID, HobbyName) Values(@UserID ,@HobbyName);
SET @String = Substring(@String, @Pos + 1, Len(@String) – @Pos);
SET @Pos = CharIndex(‘,’, @String);
End;
Insert #tmpUserHobby Values(@UserID, @String);
End;
最后,当用户发起查询请求时,就可以轻松实现以下功能了:
Select * From Table_User u inner join #tmpUserHobby h on u.user_id=h.user_id
Where h.HobbyName=’篮球’;
通过MSSQL字段查询拆分方法,我们可以节省大量空间,更重要的是,可以让数据库更加友好,更方便应用程序读取,实现数据报表的逻辑。