gpt4 book ai didi

SQL如何将一列拆分为多个变量列

转载 作者:行者123 更新时间:2023-12-01 16:25:57 27 4
gpt4 key购买 nike

我正在使用 MSSQL,尝试将一个字符串列拆分为多个列。字符串列包含用分号分隔的数字,例如:

190230943204;190234443204;

但是,某些行的数字比其他行多,因此在数据库中您可以拥有

190230943204;190234443204;
121340944534;340212343204;134530943204

我见过一些将一列拆分为特定数量的列的解决方案,但没有看到可变列。数据较少的列(由逗号分隔的 2 系列字符串,而不是 3 个)将在第三位出现空值。

想法?如果我需要澄清任何事情,请告诉我。

最佳答案

将这些数据拆分为单独的列是一个非常好的开始(逗号分隔的值是异端邪说)。但是,“可变数量的属性”通常应建模为 one-to-many relationship .

CREATE TABLE main_entity (
id INT PRIMARY KEY,
other_fields INT
);

CREATE TABLE entity_properties (
main_entity_id INT PRIMARY KEY,
property_value INT,
FOREIGN KEY (main_entity_id) REFERENCES main_entity(id)
);

entity_properties.main_entity_idforeign keymain_entity.id

恭喜你,你走在正确的道路上,这就是 normalisation 。您即将到达First Normal Form.

但是,请注意,这些属性应该具有明显相似的性质(即所有电话号码或地址等)。不要陷入黑暗面(又名 Entity-Attribute-Value anti-pattern ),并试图将所有属性放入同一个表中。如果您可以识别多种类型的属性,请将每种类型存储在单独的表中。

关于SQL如何将一列拆分为多个变量列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17414632/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com