小编Luk*_*zda的帖子

从字符串替换多个字符而不使用任何嵌套替换函数

我的表中存有一个等式.我一次取一个方程式,并希望用任何其他字符替换所有运算符.

输入字符串: (N_100-(6858)*(6858)*N_100/0_2)%N_35

运营商或模式: (+, -, *, /, %, (, ))

替换字符: ~

输出字符串: ~N_100~~6858~~~6858~~N_100~0_2~~N_35

我曾尝试使用嵌套REPLACE函数进行下面的查询,并获得了所需的输出:

DECLARE @NEWSTRING VARCHAR(100) 
SET @NEWSTRING = '(N_100-(6858)*(6858)*N_100/0_2)%N_35' ;
SELECT @NEWSTRING = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
                    @NEWSTRING, '+', '~'), '-', '~'), '*', '~'), '/', '~')
                   , '%', '~'), '(', '~'), ')', '~')
PRINT @NEWSTRING
Run Code Online (Sandbox Code Playgroud)

输出: ~N_100~~6858~~~6858~~N_100~0_2~~N_35

如何在不使用嵌套替换函数的情况下替换所有运算符?

sql t-sql sql-server replace sql-server-2008

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

管道操作员行为

根据Elixir Enumerables和Streams教程:

|>符号是管道操作符:它只是从左侧的表达式获取输出,并将其作为右侧函数调用的输入传递.

Enum模块中的所有功能都非常渴望.

那么以下陈述的区别是什么?为什么最后一个会返回不同的结果?

iex(1)> 1..1_000 |> Enum.reverse |> Enum.take 5
[1000, 999, 998, 997, 996]

iex(2)> (Enum.reverse 1..1_000) |> Enum.take 5
[1000, 999, 998, 997, 996]

iex(3)> Enum.reverse 1..1_0000 |> Enum.take 5
[5, 4, 3, 2, 1]
Run Code Online (Sandbox Code Playgroud)

elixir

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

如何获得位型列的计数?

我正在尝试使用SEDE来确定总共授予了多少个基于标签的徽章.我的典型策略是总结:

select sum(TagBased)
from Badges
Run Code Online (Sandbox Code Playgroud)

不幸的是,因为TagBased有点值,我得到这个错误:

操作数数据类型位对于sum运算符无效.

出于绝望,我试着数:

select count(TagBased)
from Badges
Run Code Online (Sandbox Code Playgroud)

这会计算非空值的数量,在这种情况下,它们相同count(*).那么如何在总体上使用一点价值呢?

sql t-sql sql-server

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

如何在PL/SQL中解析JSON字符串

我想解析表Tests_1中CLOB列中的JSON字符串,并将其插入另一个表(Test_2).

如何在不使用任何JSON库的情况下在PL/SQL中执行此操作?

create table Tests_1
(
  value   CLOB
)
create table Test_2 (a date,b date,c number,d number, e number)

INSERT INTO Tests_1
  (value)
VALUES
  ('{ 
"a":"01/01/2015",
"b":"31/12/2015",
"c":"11111111111",
"d":"1111111111",
"e":"1234567890"
}');
Run Code Online (Sandbox Code Playgroud)

oracle json plsql

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

SQL Server CTE循环; 将所有记录一起插入

我有这种情况:

drop table #t1;
drop table #t2

select * 
into #t1
from
    (select 'va1'c1,'vb1'c2,'vc1'c3 union all
     select 'va2'c1,'vb2'c2,'vc2'c3 union all
     select 'va3'c1,'vb3'c2,'vc3'c3 union all
     select 'va1'c1,'vb1'c2,'vc1'c3 union all
     select 'va2'c1,'vb2'c2,'vc2'c3 union all
     select 'va3'c1,'vb3'c2,'vc3'c3 union all
     select 'va1'c1,'vb1'c2,'vc1'c3 union all
     select 'va2'c1,'vb2'c2,'vc2'c3 union all
     select 'va3'c1,'vb3'c2,'vc3'c3 union all
     select 'va1'c1,'vb1'c2,'vc1'c3 union all
     select 'va2'c1,'vb2'c2,'vc2'c3 union all
     select 'va3'c1,'vb3'c2,'vc3'c3 union all
     select 'va4'c1,'vb4'c2,'vc4'c3) t

select *
into #t2
from #t1
where 0 = 1

;with tmp1 as
(
    select 
        t1.*,
        ROW_NUMBER() …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server common-table-expression recursive-cte

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

从同一个表中的逗号分隔列更新行列

我有以下表定义

CREATE TABLE _Table 
(
    [Pat] NVARCHAR(8), 
    [Codes] NVARCHAR(50), 
    [C1] NVARCHAR(6), 
    [C2] NVARCHAR(6), 
    [C3] NVARCHAR(6), 
    [C4] NVARCHAR(6), 
    [C5] NVARCHAR(6)
);
GO

INSERT INTO _Table ([Pat], [Codes], [C1], [C2], [C3], [C4], [C5])
VALUES
    ('Pat1', 'U212,Y973,Y982', null, null, null, null, null),
    ('Pat2', 'M653', null, null, null, null, null), 
    ('Pat3', 'U212,Y973,Y983,Z924,Z926', null, null, null, null, null);
GO  
Run Code Online (Sandbox Code Playgroud)

SQL小提琴在这里.

现在,我想分割每行的代码并填充Cn列,以便最终得到

Pat     Codes                       C1      C2      C3      C4      C5
Pat1    'U212,Y973,Y982'            U212    Y973    Y982    NULL    NULL
Pat2    'M653'                      M653    NULL    NULL    NULL    NULL …
Run Code Online (Sandbox Code Playgroud)

sql t-sql common-table-expression sql-server-2012

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

在Oracle中看似关键的保留视图的更新提出了ORA-01779

问题

我正在尝试将低性能MERGE语句重构为UPDATEOracle 12.1.0.2.0中的语句.该MERGE声明是这样的:

MERGE INTO t
USING (
  SELECT t.rowid rid, u.account_no_new
  FROM t, u, v
  WHERE t.account_no = u.account_no_old
  AND t.contract_id = v.contract_id
  AND v.tenant_id = u.tenant_id
) s
ON (t.rowid = s.rid)
WHEN MATCHED THEN UPDATE SET t.account_no = s.account_no_new
Run Code Online (Sandbox Code Playgroud)

它大多是低性能的,因为对大型(100M行)表有两个昂贵的访问 t

架构

这些是涉及的简化表:

  • taccount_no正在迁移其列的目标表.
  • u迁移指令表包含account_no_oldaccount_no_new映射
  • v建模contract_id和之间的一对一关系的辅助表tenant_id

架构是:

CREATE TABLE v (
  contract_id NUMBER(18) NOT NULL PRIMARY KEY,
  tenant_id NUMBER(18) NOT …
Run Code Online (Sandbox Code Playgroud)

sql oracle merge updatable-views

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

确定 Snowflake 中的列是否为虚拟列

Snowflake 没有记录其使用 AS 子句的虚拟列功能。我正在进行迁移,需要以编程方式过滤掉虚拟列。

有什么方法可以识别一列是虚拟的吗?该Information Schema.COLLUMNS视图显示虚拟列定义和非虚拟列定义之间没有任何区别。

calculated-columns virtual-column snowflake-cloud-data-platform

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

存储行数和行数以加快分页是不是一个坏主意?

我的网站有超过20.000.000个条目,条目有类别(FK)和标签(M2M).至于查询,即使像SELECT id FROM table ORDER BY id LIMIT 1000000, 10MySQL需要扫描1000010行,但这实在是慢得令人无法接受(而pks,索引,连接等等在这里帮助不大,仍然是1000010行).所以我试图通过使用这样的触发器存储行计数和行号来加速分页:

DELIMITER //
CREATE TRIGGER @trigger_name
AFTER INSERT
ON entry_table FOR EACH ROW
BEGIN
    UPDATE category_table SET row_count = (@rc := row_count + 1)
    WHERE id = NEW.category_id;
    NEW.row_number_in_category = @rc;
END //
Run Code Online (Sandbox Code Playgroud)

然后我可以简单地说:

SELECT * 
FROM entry_table 
WHERE row_number_in_category > 10 
ORDER BY row_number_in_category 
LIMIT 10
Run Code Online (Sandbox Code Playgroud)

(现在只扫描了10行,因此选择速度非常快,虽然插入速度较慢,但​​与选择相比它们很少见,所以没关系)

这是一个糟糕的方法,还有什么好的选择吗?

mysql pagination

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

C#Dapper使用JSON_VALUE进行SQL Server 2016

我想使用JSON_VALUE以下方法查询表中的数据:

var str = "123";
var value = "Name"
using(var conn = GetMyConnection())
{
   var result = conn.QueryFirstOrDefault<string>(
      @"SELECT [Id] FROM [dbo].[MyTable]
         WHERE JSON_VALUE([JsonColumn], @MyQuery) = @Str",
      new
      {
         MyQuery = $"$.{value}",
         Str = str
      }
   );
}
Run Code Online (Sandbox Code Playgroud)

我在SQL Server中尝试这个,它正在工作:

SELECT [Id] FROM [dbo].[MyTable]
WHERE JSON_VALUE([JsonColumn], '$.Name') = '123'
Run Code Online (Sandbox Code Playgroud)

我应该如何调整我的代码?

c# t-sql dapper sql-server-2016 json-query

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