【问题标题】:Trimming datatable entries from select从选择中修剪数据表条目
【发布时间】:2019-12-04 18:30:05
【问题描述】:

我有以下代码:

DataTable usersAndPhones = new DataTable();
using (var comm = new SqlCommand("SELECT ID, PhoneNumber FROM Users", conn))
{
    try
    {
        conn.Open();
        usersAndPhones.Load(comm.ExecuteReader());
    }
    catch
    {
        // ...
    }
}

数据库中的一些PhoneNumbers 在数字中带有空格(它们是字符串)。修剪它们的最佳方法是什么?

【问题讨论】:

  • string.Trimstring.Replace(或 SQL 本身中的等效项)。
  • 如果您的数据库提供商支持,您可以在SELECT 语句中使用TRIM()
  • 前导和尾随空格还是介于两者之间?

标签: c# sql datatable


【解决方案1】:

如果您只想删除字符串前后的空格,请使用此

SELECT LTRIM(RTRIM(PhoneNumber)) as 'PhoneNumber'

例如

SELECT LTRIM(RTRIM(' 33 5 5 ')) as 'PhoneNumber' 将返回 > '33 5 5'

-或-

像这样在 SQL 中使用 REPLACE 函数,它将替换字符串中的所有空格。

DataTable usersAndPhones = new DataTable();
using (var comm = new SqlCommand("SELECT ID, REPLACE(PhoneNumber , ' ', '') as 'PhoneNumber' FROM Users", conn))
try
{
    conn.Open();
    usersAndPhones.Load(comm.ExecuteReader());
}

SELECT REPLACE(' 33 5 5 ', ' ','') as 'PhoneNumber' 将返回 > '3355'

【讨论】:

  • 这将替换所有空格,包括中间的空格。 Op 只是要求在开始和结束时进行修剪。标题是TRIMMING。
  • 他还说“数字中有空格”,所以我认为他需要在数字之间留出空格。
  • 借助 SQL-Server 2017,您可以使用 TRIM
  • 正确,但他没有提到版本,所以我提供了适用于所有版本的版本。
  • 另一种不使用 sql 的方法是枚举行:foreach(DataRow r in usersAndPhones) r.SetField("PhoneNumber",r.Field<string>("PhoneNumber").Trim())
【解决方案2】:

TRIM() 函数将删除字符串开头和结尾的空格:

SELECT TRIM(PhoneNumber) as 'PhoneNumber' ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多