标签: string-manipulation

在 SQL Server 中本地解码 Base64 字符串

varchar在 SQL Server 的表中有一个列,其中包含一个 base64 编码的文本字符串,我想将其解码为纯文本等效项

SQL Server 是否具有处理此类事情的任何本机功能?

一个示例 base64 字符串:

cm9sZToxIHByb2R1Y2VyOjEyIHRpbWVzdGFtcDoxNDY4NjQwMjIyNTcxMDAwIGxhdGxuZ3tsYXRpdHVkZV9lNzo0MTY5ODkzOTQgbG9uZ2l0dWRlX2U3Oi03Mzg5NjYyMTB9IHJhZGl1czoxOTc2NA==
Run Code Online (Sandbox Code Playgroud)

解码为:

role:1 producer:12 timestamp:1468640222571000 latlng{latitude_e7:416989394 longitude_e7:-738966210} radius:19764
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql sql-server-2008-r2 cast string-manipulation

19
推荐指数
1
解决办法
6万
查看次数

修剪空白(空格、制表符、换行符)

我在 SQL Server 2014 上,我需要从列内容的开头和结尾清除空格,其中空格可以是简单的空格、制表符或换行符(\n\r\n);例如

'    this content    '                          should become 'this content'
'  \r\n   \t\t\t this \r\n content \t  \r\n   ' should become 'this \r\n content'
Run Code Online (Sandbox Code Playgroud)

等等。

我只能实现第一个案例

UPDATE table t SET t.column = LTRIM(RTRIM(t.column))
Run Code Online (Sandbox Code Playgroud)

但对于其他情况,它不起作用。

sql-server t-sql sql-server-2014 string-manipulation

13
推荐指数
1
解决办法
5万
查看次数

STRING_SPLIT 带有多字符分隔符?

SQL Server 2016 引入了STRING_SPLIT,它非常快,是人们在 2016 年之前推出的任何自制实现的绝佳替代品。

不幸的是,STRING_SPLIT 只支持单字符分隔符,这并不总是足够的。有谁知道允许在分隔符中使用多个字符的良好实现?

sql-server t-sql sql-server-2016 string-manipulation

11
推荐指数
1
解决办法
1万
查看次数

将一列中的空格 (" ") 替换为没有空格 ("")

我有一张这样的表:

身份证 | 普罗平西 | 哥打 |
_________________________
 1 | 亚齐 | 登巴萨
 2 | 亚齐 | 班达亚齐
 3 | 苏门答腊 | 阿萨汉

这个表有很多行。问题是我想Kota为所有行替换列中文本之前的空格,如下所示:

身份证 | 普罗平西 | 哥打 |
_________________________
 1 | 亚齐|登巴萨
 2 | 亚齐|班达亚齐
 3 | 苏门答腊|阿萨汉

我搜索了谷歌,replaceMySQL中的功能只影响一行:

SELECT REPLACE(string_column, 'search', 'replace') as Kota
Run Code Online (Sandbox Code Playgroud)

有人可以解决我的问题吗?

mysql string-manipulation

10
推荐指数
2
解决办法
16万
查看次数

查找列中最常用的非停用词

简而言之,我有一个包含普通散文的 Postgres 列,我想确定所有行中x最常用的单词(“单词”是由空格分隔的一组字符,但不是停用词)。

我找到了两个几乎达到目标的解决方案:

SELECT *                                       
FROM   ts_stat($$SELECT to_tsvector('english', title) FROM item$$) 
ORDER  BY ndoc DESC
LIMIT  50;
Run Code Online (Sandbox Code Playgroud)

这很好,除了它返回词干。

SELECT   UNNEST(string_to_array(title, ' ')) AS word, COUNT(*) AS ct
FROM     item 
GROUP    BY 1 
ORDER    BY 2 DESC
LIMIT    50;
Run Code Online (Sandbox Code Playgroud)

这个返回完整的词,但包括停用词。

为简单起见:应该在 上找到停用词TABLE stop_words (lowercase_stopword text PRIMARY KEY)

有人可以帮我上网吗?

postgresql full-text-search string-manipulation

7
推荐指数
2
解决办法
2542
查看次数

函数 PARSENAME() 是否与 QUOTENAME() 相反

在问题MS-SQL 上是否有任何(隐藏的)内置函数来取消引用对象名称?作者正在寻求有关是否存在“取消引用”引用字符串的内部函数的建议。作者McNets已经注意到,一些内部函数可以处理引用(例如[MyTable])和未引用(例如)MyTable传递的参数值(例如OBJECT_ID())。

David Browne - Microsoft给出的答案 ( 1 ) 中,引述如下:

... QUOTENAME 的反面是 PARSENAME,它具有导航多部分名称的附加功能。

我不同意这部分答案的以下评论:

我不同意,你可以修改传递给一个参数PARSENAME()来显示多部分的部分标识是它的SERVERDATABASESCHEMAOBJECT部分。但恕我直言,PARSENAME与此相反的说法QUOTENAME有点牵强。

我现在的问题是:

函数PARSENAME()是相反的QUOTENAME()吗?

sql-server functions string-manipulation

7
推荐指数
1
解决办法
1739
查看次数

选择一个 CSV 字符串作为多列

我正在使用 SQL Server 2014 并且我有一个包含一列包含CSV字符串的表:

110,200,310,130,null
Run Code Online (Sandbox Code Playgroud)

该表的输出如下所示:

选择结果

我想选择第二列作为多列,将 CSV 字符串的每个项目放在一个单独的列中,如下所示:

预期结果

所以我创建了一个用于拆分字符串的函数:

create FUNCTION [dbo].[fn_splitstring]
(
    @List nvarchar(2000),
    @SplitOn nvarchar(5)
)  
RETURNS @RtnValue table 
(
    Id int identity(1,1),
    Value nvarchar(100)
) 
AS  
BEGIN 
    while (Charindex(@SplitOn,@List)>0)
    begin
        insert into @RtnValue (value)
        select 
            Value = ltrim(rtrim(Substring(@List,1,Charindex(@SplitOn,@List)-1)))

        set @List = Substring(@List,Charindex(@SplitOn,@List)+len(@SplitOn),len(@List))
    end
    insert Into @RtnValue (Value)
    select Value = ltrim(rtrim(@List))

    return
END
Run Code Online (Sandbox Code Playgroud)

我想像这样使用它:

select Val , (select value from tvf_split_string(cchar1,','))  from table1
Run Code Online (Sandbox Code Playgroud)

但是上面的代码显然行不通,因为该函数将返回多于一行,导致子查询返回多于一个值并破坏代码。

我可以使用类似的东西:

select Val ,
(select value from …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2014 csv string-manipulation

6
推荐指数
2
解决办法
8695
查看次数

过滤字符以仅返回字符串中的数字字符?

我想过滤一个nvarchar字段以仅返回数值。

我有一些 SQL 可以做到这一点,但它似乎比它需要的要复杂得多。我有兴趣找出是否有人有更好的方法来过滤掉字符串中的任何非数字字符?

IF OBJECT_ID('tempdb..#MOB') IS NOT NULL
BEGIN
    DROP Table #MOB
END

SELECT [mob]
INTO #MOB
FROM (
SELECT '(00) 1234 5678' AS [mob]
UNION
SELECT '1234 5678' AS [mob]
UNION
SELECT '+61 012 345 678' AS [mob]
) AS temp


;WITH [fill] ([Num], [Index], [MOBILEPHONE])
AS
(
    SELECT 
    CASE 
        WHEN [MOBILEPHONE] IS NOT NULL
        THEN SUBSTRING([MOBILEPHONE], 1, 1) 
        ELSE NULL 
    END AS [Num]
    , 1 AS [INDEX], [MOBILEPHONE]
    FROM (
        SELECT DISTINCT [mob] AS [MOBILEPHONE] …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2 string-manipulation

6
推荐指数
3
解决办法
5496
查看次数

字段中的字数统计(所有且唯一) - 有没有更优雅/最佳的方式?

回答这个问题

鉴于此表(根据问题构建):

CREATE TABLE wordcount (id SERIAL NOT NULL PRIMARY KEY, description TEXT NOT NULL);

INSERT INTO wordcount (description) VALUES ('What a great day');
INSERT INTO wordcount (description) VALUES ('This is a product. It is useful');
Run Code Online (Sandbox Code Playgroud)

产生这个结果:

     id  | word_count | unique_word_count |  Description                        
---------+------------+-------------------+---------------
     1   |  4         | 4                 | What a great day
     2   |  7         | 6                 | This is a product. It is useful
Run Code Online (Sandbox Code Playgroud)

我给出了(正确的)答案,你可以在这里找到。

然而,在评论中,OP 然后又问了一个问题——如果有问题的字符串是['a', ' ', ' ', …

postgresql optimization string-manipulation query-performance

5
推荐指数
1
解决办法
646
查看次数

如何从命令行将变量传递给 PL/pgSQL 代码?

我正在从命令行运行 psql 脚本,其中的变量类似于:

psql ...... -v now_utc=$NOW_UTC 
Run Code Online (Sandbox Code Playgroud)

然后我想在我的脚本中使用它,例如:

$$
DECLARE
   _now_date timestamp := :now_utc;
BEGIN
  -- do something
END
$$
Run Code Online (Sandbox Code Playgroud)

但我得到了一个错误,如:

syntax error at or near ':'
Run Code Online (Sandbox Code Playgroud)

一旦我从:now_utc变为now(),脚本就很好,它就像一个魅力。

问题是如何将变量从命令行传递给 PL/pgSQL 代码?

postgresql psql plpgsql string-manipulation

5
推荐指数
1
解决办法
2708
查看次数