使用C#和SQL Server解析逗号分隔字符串的最佳实践

使用C#和SQL Server解析逗号分隔字符串的最佳实践,c#,sql,sql-server,parsing,csv,C#,Sql,Sql Server,Parsing,Csv,我有一个SMS机器,每次收到消息时,它都会向填充SQL Server数据库表的页面发送帖子。 消息的文本如下所示: #MessageType#Variable1:Value1,Variable2:Value2,Variable3:Value3 现在我有了消息文本,我必须解析它以获得值并填充另一个表。 解析消息的最佳实践是什么?直接在短信机发布的代码后面?在SQL Server中使用触发器 考虑到我将在同一台SMS机器上接收不同变量的多种消息类型,通常情况下,这样做是为了避免给数据库服务器带来超

我有一个SMS机器,每次收到消息时,它都会向填充SQL Server数据库表的页面发送帖子。 消息的文本如下所示:

#MessageType#Variable1:Value1,Variable2:Value2,Variable3:Value3
现在我有了消息文本,我必须解析它以获得值并填充另一个表。 解析消息的最佳实践是什么?直接在短信机发布的代码后面?在SQL Server中使用触发器


考虑到我将在同一台SMS机器上接收不同变量的多种消息类型,通常情况下,这样做是为了避免给数据库服务器带来超过其现有负载的负载(我见过这样的情况,但通常情况下是这样)

因此,在插入sql server时(因此在处理POST的服务器的位置)直接执行类似操作(格式化要插入到sql server中的文本)几乎总是更好的

在您的情况下,有两个选项可用于将文本转换为数据库的适当值:

  • 正则表达式
  • 2个组合拆分(一个用于,另一个用于:)

通常首选正则表达式,除非程序员对正则表达式不是很有经验,然后通常使用第二种方法(如果您不习惯正则表达式,则正则表达式可能会非常麻烦)

您的结构相对严格,所以我个人会使用Regex。我认为我属于第二类。通常对于这样的任务,我会使用
if(messageText.StartsWith(“#MessageType1#”){else if(messageText.StartsWith(“#MessageType2#”){else if(messageText.StartsWith(“#MessageType3#”)检查消息类型)){…}
在一个子字符串之后,只获取值,然后进行一些分割以获取值。现在我想做一些更“专业”的事情.就我个人而言,我更喜欢非正则表达式变体,因为它更容易一眼就能看懂,但性能方面,使用正则表达式通常是更好的选择,而且正则表达式通常被视为最佳实践变体。您好,在这种情况下,我学会了如何根据需要编写正则表达式,并使用SQL来匹配我接收和删除的消息我运行一个存储过程,在另一个表中进行插入。