我的问题是:我有一个包含列Compose
的表emailID
。在此列中,我有abc@abc.com
,def@abc.com, ghi@abc.com
等数据。
现在每当我使用select count(*) from compose
计算该列的元素数量时,它会显示答案:2个元素,但它应该返回3个元素的答案。它应该将def@abc.com
和ghi@abbc.com
计为单行中的两个元素。我的问题是如何在两个条目计数之间用逗号创建一个行条目。是否有任何SQL命令?
谢谢
答案 0 :(得分:0)
您不应该在一列中存储多个值。这不是存储数据的SQL方式。相反,您需要另一个表,每封电子邮件一行。
也就是说,如果您无法更改数据模型,那么这种方法可以解决您提出的具体问题:
select sum(case when emails not like '%,%' then 1
when emails not like '%,%,%' then 2
end) as full_cnt
答案 1 :(得分:0)
正如之前评论中所述 - 不要!在单一难以理解的字段中存储您需要处理的数据。当存储真正的单个电子邮件时,您也可以在保存之前对其进行验证。
当用户将数据输入文本框时 - 您的应用程序应该执行拆分并将存储在“电子邮件”表中的单个电子邮件存储
string[] emls = textBox.Text.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries);
在呈现供用户编辑的数据时,您可以将“电子邮件”中的数据合成到单个文本框中。