首页 > 解决方案 > 格式化数据库字符串列

问题描述

我需要查询的数据库行结果大约是 300,000 行(不断增长)。

调用是从我的主视图(MVC .net 核心)中的控制器发出的,其中一列采用以下格式:

我需要剥离 [ ] 或 [G ]

我会在数据库级别删除它吗,例如:

SELECT [Id]
      ,[Name]
      ,[Text] =  Right([Text], LEN([Text]) - 8) 
FROM MyDatabase

这似乎不正确——尽管它有效——我必须输入一个神奇的数字 8。如果将来发生变化怎么办?开发人员坚持没有没有意义的数字?

或者在控制器中执行:

viewModel.List = data.Select(val => new ViewModel
                    {
                        Id = val. Id,
                        Name = val.Name,
                        Text = val.Text.Substring(val.Text.IndexOf(']'))
                    }).ToList();

如果您可以遮光或有更好的主意,我将不胜感激。

标签: c#sql-server

解决方案


根据您对=[]的使用情况,您可以很安全地猜测您使用的数据库是 SQL Server。
在这种情况下,您可以在数据库中使用charindex- 而不是8使用charindex(']', [Text])

SELECT [Id]
      ,[Name]
      ,[Text] =  RIGHT([Text], LEN([Text]) - CHARINDEX(']', [Text])) 
FROM MyDatabase

推荐阅读