当前位置: 首页 > 面试题库 >

SQL拆分字符串并获取NULL值而不是空字符串

长孙章横
2023-03-14
问题内容

如何拆分字符串并获取NULL值而不是空字符串。

我特别感兴趣的两个方法STRING_SPLITXML。我希望这个查询:

SELECT * FROM STRING_SPLIT('a,b,,d', ',');

将返回第三行NULL而不是空字符串。有没有简单的方法可以做到这一点,即使用特殊字符?我的意思是:

SELECT * FROM STRING_SPLIT('a,b,[null],d', ',') -- this, of course, wouldn't go

我希望我可以使用XML方法从字符串中提取NULL :

CREATE FUNCTION dbo.SplitStrings_XML
(
   @List       varchar(8000),
   @Delimiter  char(1)
)
RETURNS TABLE WITH SCHEMABINDING
AS
   RETURN (SELECT [value] = y.i.value('(./text())[1]', 'varchar(8000)')
      FROM (SELECT x = CONVERT(XML, '<i>' 
          + REPLACE(@List, @Delimiter, '</i><i>') 
          + '</i>').query('.')
      ) AS a CROSS APPLY x.nodes('i') AS y(i));

从这里获取的代码:https : //sqlperformance.com/2016/03/t-sql-queries/string-
split


问题答案:

将返回值包装为NULLIF

SELECT NULLIF([value],'') FROM STRING_SPLIT...


 类似资料:
  • 问题内容: 由于空字符串是Go的零/默认值,因此我决定将所有此类字段定义为。例如 如果该值不适用于该特定字段,则我正在发送数据的应用程序期望使用null而不是空字符串。 这是正确的方法吗?或者有人可以向我指出比这更好的方法。 问题答案: 在json包文档中: 指针值编码为指向的值。nil指针编码为空JSON对象。 因此,您可以存储指向字符串的指针,如果不为nil,则将其编码为字符串;如果为nil,

  • 我想获取字段的字符串值(它们可以是长字符串或任何对象的类型), 如果一个字段为null,那么它应该返回空字符串,我对GUAVA就是这样做的; 但如果齿轮箱为空,则返回空!不是空字符串,因为valueOf MethodOd返回字符串“null”,这会导致错误。 有什么想法吗? 编辑:有100s字段我寻找一些容易实现的东西

  • 问题内容: 样本数据: 我使用以下查询将’ ‘’分隔的字符串分成几行: 我的查询存在问题,我不想为每个拆分的电子邮件地址创建新行-我想为其添加新列。 email_address列中最多有3个单独的电子邮件地址。有什么建议?如果它的大小超过3,最好是答案可以占n列。 问题答案: 测试数据 询问 结果

  • 问题内容: 我正在使用pandas库读取一些CSV数据。在我的数据中,某些列包含字符串。该字符串是一个可能的值,一个空字符串也可以。我设法让大熊猫以字符串形式读取“ nan”,但我不知道如何获取它而不读取作为NaN的空值。这是示例数据和输出 它正确地写着“男”为字符串“南”,但仍读取空单元格作为NaN的。我想传递的参数read_csv(带),但它仍然读取空单元格作为NaN的。 我知道我可以在读取后

  • 问题内容: 我试图使用分隔符拆分值。但是我发现了令人惊讶的结果 我期望得到8个值。[5,6,7,EMPTY,8,9,EMPTY,EMPTY] 但是我只得到6个值。 任何想法以及如何解决。无论EMPTY值在何处,它都应该位于数组中。 问题答案: 默认情况下,从结果数组中删除结尾的空字符串。要关闭此机制,我们需要使用重载版本,将其设置为负值,例如 更多细节: 内部返回该方法的结果,你可以在此方法的文档

  • 任何想法和如何修复。无论空值出现在任何位置,它都应该在数组中。