gpt4 book ai didi

sql-server - OR 2 个 0,1 字符串的最佳方法

转载 作者:行者123 更新时间:2023-12-02 18:56:04 25 4
gpt4 key购买 nike

我有 2 个仅包含 0 和 1 的字符串。我想要一个逐字符按位或的结果字符串。

DECLARE @str1 nvarchar;
DECLARE @str2 nvarchar;
SET @str1= '11001100';
SET @str2= '00100110';

-- I want result to be : 11101110

字符串的大小是可变的。我可以使用 for 循环并对字符进行一一或操作。但是字符串的数量是可变的,并且它们的大小可能超过100万...有没有比FOR循环更好的方法?

最佳答案

理想情况下,您会将其编码为二进制。

11001100 是一个单字节0xCC

存储为 varchar 意味着它需要 8 个字节,声明为 nvarchar 意味着它需要 16 个字节。

然后您还可以使用 CLR 和按位运算符。

尽管使用 CLR 函数回答您提出的问题可能仍然是迄今为止性能最佳的方法。

using System;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

public partial class UserDefinedFunctions
{
[SqlFunction]
public static SqlString StringOr(SqlChars a, SqlChars b)
{
if (a.Length != b.Length)
{
throw new Exception("Strings should be the same length.");
}

char[] c = new char[a.Length];

for(int i =0; i < a.Length; i++)
{
c[i] = (a[i] == '0' && b[i] == '0' ? '0' : '1');
}

return (SqlString)(new SqlChars(c));
}
}

enter image description here

关于sql-server - OR 2 个 0,1 字符串的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27729802/

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