查询非正常第三种形式的表

发布于 2024-08-07 01:02:57 字数 310 浏览 3 评论 0原文

您好,我有一个表是由一个懒惰的开发人员设计的,他没有以第三范式创建它。他将数组保存在表中,而不是使用 MM 关系。并且应用程序正在运行,因此我无法更改数据库架构。

我需要像这样查询表:

SELECT * FROM myTable WHERE usergroup = 20

其中 usergroup 字段包含如下数据:17,19,20 或者它也可能只有 20 或只有 19。

我可以使用如下搜索: 从 myTable 中选择 * 其中用户组类似于 20 但在这种情况下,它也会匹配包含 200 的字段,例如

有人知道吗? 谢谢

Hi I have a table which was designed by a lazy developer who did not created it in 3rd normal form. He saved the arrays in the table instead of using MM relation . And the application is running so I can not change the database schema.

I need to query the table like this:

SELECT * FROM myTable
WHERE usergroup = 20

where usergroup field contains data like this : 17,19,20 or it could be also only 20 or only 19.

I could search with like:
SELECT * FROM myTable
WHERE usergroup LIKE 20
but in this case it would match also for field which contain 200 e.g.

Anybody any idea?
thanx

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夏有森光若流苏 2024-08-14 01:02:57

修复错误的数据库设计。

短期修复方法是添加相关表以获得正确的结构。添加触发器以在插入和更新时将旧字段中的信息解析到相关表中。然后编写一个脚本来[解析出现有数据。现在您可以正确查询,但您没有破坏任何旧代码。然后你可以搜索旧代码并修复。完成此操作后,只需更改在原始表中插入或更新代码的方式即可添加新表并删除旧列。

Fix the bad database design.

A short-term fix is to add a related table for the correct structure. Add a trigger to parse the info in the old field to the related table on insert and update. Then write a script to [parse out existing data. Now you can porperly query but you haven't broken any of the old code. THen you can search for the old code and fix. Once you have done that then just change how code is inserted or udated inthe orginal table to add the new table and drop the old column.

記憶穿過時間隧道 2024-08-14 01:02:57

编写一个表值用户定义函数(SQL Server 中的 UDF,我确信它在其他 RDBMS 中会有不同的名称)来解析包含存储为字符串的列表的列的值。对于逗号分隔列表中的每个项目,您的函数应在表结果中返回一行。当您使用这样的查询时,请针对从 UDF 返回的结果进行查询。

Write a table-valued user-defined function (UDF in SQL Server, I am sure it will have a different name in other RDBMS) to parse the values of the column containing the list which is stored as a string. For each item in the comma-delimited list, your function should return a row in the table result. When you are using a query like this, query against the results returned from the UDF.

泛泛之交 2024-08-14 01:02:57

编写一个函数将逗号分隔列表转换为表格。应该很简单。然后你可以使用IN()。

Write a function to convert a comma delimited list to a table. Should be pretty simple. Then you can use IN().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文