c# - 格式化数据库字符串列
问题描述
我需要查询的数据库行结果大约是 300,000 行(不断增长)。
调用是从我的主视图(MVC .net 核心)中的控制器发出的,其中一列采用以下格式:
- [ ] 猫是黑的
- [ ] 这里是变化
- [G] 其他一些文字
我需要剥离 [ ] 或 [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();
如果您可以遮光或有更好的主意,我将不胜感激。
解决方案
根据您对=
和[]
的使用情况,您可以很安全地猜测您使用的数据库是 SQL Server。
在这种情况下,您可以在数据库中使用charindex
- 而不是8
使用charindex(']', [Text])
:
SELECT [Id]
,[Name]
,[Text] = RIGHT([Text], LEN([Text]) - CHARINDEX(']', [Text]))
FROM MyDatabase
推荐阅读
- c# - C# 如何在没有 XAML 的情况下创建到父元素的(两种方式)数据绑定
- c# - Windows WindowHandle 不是 Selenium 驱动程序。CurrentWindowHandle
- java - Android Studio 回收器视图无法正常工作
- python - 登录在 Django 中的自定义用户模式中不起作用
- node.js - 扩展快速响应以修改现有中间件
- javascript - Firebase 身份验证检索 displayName Null
- excel - 当工作表中有任何更改时,自动运行宏
- node.js - 错误:您不是在节点 js 中使用 nano 模块的服务器管理员沙发数据库
- azure-devops - Azure Pipelines BizTalk - Microsoft 托管生成代理
- javascript - laravel ajax 表单和复选框