sql - SQL 行操作
问题描述
我的表中有这种数据:
----------------------------------------
| price | category | categoryID |
----------------------------------------
| 50,100,150 | Pants | 1 |
----------------------------------------
| 30,60,90 | Polo | 2 |
----------------------------------------
然后我想把它们放在单独的行中,如下所示:
----------------------------------------
| price | category | categoryID |
----------------------------------------
| 50 | Pants | 1 |
----------------------------------------
| 100 | Pants | 1 |
----------------------------------------
| 150 | Pants | 1 |
----------------------------------------
| 30 | Polo | 2 |
----------------------------------------
| 60 | Polo | 2 |
----------------------------------------
| 90 | Polo | 2 |
----------------------------------------
我怎么可能在 MS SQL 中做到这一点?我目前正在尝试使用 XML 路径,但无法使用多列。
谢谢你。
解决方案
正如评论中提到的,你的设计很糟糕。但是,如果你想继续,你可以使用 STRING_SPLIT 函数。
STRING_SPLIT:一个表值函数,它根据指定的分隔符将字符串拆分为多行子字符串。
更多信息:https ://docs.microsoft.com/en-us/sql/t-sql/functions/string-split-transact-sql?view=sql-server-2017
SELECT value AS price,
category,
categoryid
FROM tableName
CROSS apply STRING_SPLIT(price, ',')
使用此参考资料了解有关数据库规范化的更多信息:https ://www.tutorialspoint.com/dbms/database_normalization.htm
推荐阅读
- javascript - 单击处理程序不适用于框架原始几何对象
- android - Android Gradle 插件仅支持 Kotlin Gradle 插件版本 1.2.51 及更高版本。项目“MyApp”使用的是 1.1.51 版本。受影响的模块:app
- php - 如何检查一个数组是否在其他数组PHP中一个接一个地具有值?
- mongodb - 访问 mongoose.Schema.methods 中的“select: false”字段
- wordpress - 安全,https 直播时,网站不会在 XAMPP 中以 http 形式打开副本
- sapui5 - sap.m.GenericTile 的容器
- grails - Grails:插件 [controllers:3.3.9] 无法重新加载对文件的更改
- swift - AVCaptureVideoPreviewLayer 和 AVDepthData.depthDataMap 问题
- facebook-graph-api - 如何在不登录的情况下从 Instagram Business API 获取 Instagram Business 帐户的数据?
- linux - 使用 select() 进行 I/O 多路复用