小编mus*_*cio的帖子

Redshift:如果元胞数组中存在值,则返回行

如何返回包含列元胞数组中特定值的行?

想象一下我们有一个像这样的表:

id    name    phone           values
1     Taylor  xxx.xxx.xxxx    [4,6,5]
2     John    yyy.yyy.yyyy    [1,5,2]
3     Peter   zzz.zzz.zzzz    [6,2,6]
Run Code Online (Sandbox Code Playgroud)

我需要创建一个 SQL 查询,该查询将返回数组中存在值“6”的行values。所以预期的输出是:

id    name    phone           values
1     Taylor  xxx.xxx.xxxx    [4,6,5]
3     Peter   zzz.zzz.zzzz    [6,2,6]
Run Code Online (Sandbox Code Playgroud)

我们正在 Redshift 中工作。json_extract_array_element_text('json_string', pos)因此,如果更容易的话,可以使用该功能的可能性。请注意,值数组的长度可能彼此不同。

redshift

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

How to use a CASE expression in the WHERE clause?

I am using a CASE expression in my WHERE clause like this:

SELECT *    
FROM    ASPECT.WR_AM_ADT_SUMM
INNER JOIN ASPECT.WR_AM_DLR_DTL
  ON    AS_CNTRY_CD = DD_CNTRY_CD AND 
        AS_DLR_CD = DD_DLR_CD AND 
        AS_YEAR = DD_YEAR
RIGHT JOIN ASPECT.DEALER_MASTER
  ON    COUNTRY_CD = AS_CNTRY_CD AND 
        DEALER_CDE_VEGA = AS_DLR_CD
WHERE
        COUNTRY_CD = '81930' AND 
        LANG_CD = '02' AND 
        (CASE PARM_ADTR_ID 
           WHEN 'ALL' THEN (AS_ADTR_ID_P IS NULL OR AS_ADTR_ID_P LIKE '%') 
           ELSE AS_ADTR_ID_P LIKE LOC_ADTR_ID 
        END) AND 
        DEALER_CDE_VEGA LIKE '8%'
        ;
Run Code Online (Sandbox Code Playgroud)

In the above query when I pass …

db2 case

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

为什么 AlwaysON 副本的备份大小不同?

我们设置了 SQL Server 2014 Always ON,其中包含一个主要副本和一个辅助副本。我一直在使用 Dell LiteSpeed 在辅助副本上进行数据库备份(完整和 tlog),以便从主副本卸载该流量。我们让一位开发人员截断了一个重要的表,因此我们不得不从完整备份和 tlog 备份中恢复主数据库。在恢复之前,我首先在主数据库上进行了完整的数据库备份,并注意到它只有 34 GB,而辅助数据库的备份几乎是 70 GB。恢复后,人们抱怨性能很慢。我的问题是为什么辅助副本上的数据库备份是主副本的两倍。TIA。

sql-server backup availability-groups sql-server-2014

4
推荐指数
1
解决办法
218
查看次数

备份突然需要很长时间才能完成

我们有一个大约 3 TB 的 SQL Server 2014 企业版数据库。我们每周都进行压缩完整备份,直到上周它都运行良好,现在突然需要 18 个小时才能完成。

备份完成后,备份大小约为 550 GB。

备份驱动器有大约 950 GB 的可用磁盘空间。

可能是什么问题?

sql-server backup sql-server-2014

4
推荐指数
1
解决办法
9604
查看次数

在mysql 5.7及以上版本中使用json_contains函数执行通配符搜索

我有一些使用该json_object()函数获得的嵌套 json 数据。现在我需要检查我在查询中使用的特定键是否存在某个值:-

select json_object(..) from tblxyz 
  where json_contains(columnname, '{"MyName" : "FirstName LastName"}')
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是我需要整个字符串“FirstName LastName”才能在实际结果中找到这一行。现在我需要执行通配符搜索。那是:-

select json_object(..) from tblxyz 
  where json_contains(columnname, '{"MyName" : "FirstName"}')
Run Code Online (Sandbox Code Playgroud)

还应该在最终结果中将此条目返回给我。有人可以建议任何解决方法吗?

mysql json mysql-5.7

4
推荐指数
1
解决办法
5641
查看次数

SQL Server 模拟

这个问题是关于 Microsoft SQL Server 中的模拟。我想知道,如果我对特定登录拥有模拟权限,那么我可以随时轻松地模拟该登录,并且不需要使用EXECUTE AS OWNER?的存储过程。如果是这样,那么存储过程的目的是什么EXECUTE AS

security sql-server permissions impersonation

4
推荐指数
1
解决办法
5366
查看次数

我可以以用户“dbo”的身份连接到数据库吗?

如果不是,为什么?

在安全审计期间,我们被问及 dbo 登录是否是交互式的。我的理解是账户是由SQL server自己自动创建和管理的,不是直接交互的。

我试图在证明一个系统管理员的用户将出现在SESSION_USER作为dbo身份验证时,但他们不完全相信。他们现在的问题是是否可以通过使用其密码登录来直接对 dbo 进行身份验证。

这可能吗?我什至不知道在哪里可以找到 dbo 的密码,如果有的话。

authentication sql-server

4
推荐指数
1
解决办法
4004
查看次数

如何防止只读副本在高复制延迟期间重新启动

我们正在运行一个 Aurora PostgreSQL 集群,其中包含一个只读副本和主节点。

定期出现非常重的写入负载,导致较高的复制延迟。这可能会导致只读副本重新启动,这对于高可用性环境中的我们来说是不希望的。发生这种情况时,通过只读端点连接到集群的客户端会收到此 JDBC 错误:org.postgresql.util.PSQLException: FATAL: the database system is starting up。此外,AWS 控制台在日志中显示了这些内容:

只读副本已经落后于主数据库太多了。重新启动 postgres。

其次是

数据库实例已重新启动

我们可以容忍只读副本落后几分钟,但不能容忍只读副本重新启动才能赶上。

有没有办法防止只读副本在这些时间段内重新启动?

或者,是否有任何建议的调整可以减少写入负载较重期间的复制延迟?

postgresql replication aws-aurora

4
推荐指数
1
解决办法
4778
查看次数

处理存储过程中的可选参数

我有一个存储过程,用可选参数@Param1 int = NULL 说“测试”。在该过程中,@Param1 的值用于更新某个表中某个列的值,如果调用者提供了一个值。如果未提供该参数,则不会更新该列。不幸的是,该列允许 NULL,因此调用者无法将列值设置为 NULL。所以,问题是:程序是否能够区分以下两个调用?

EXEC Test -- 预期含义:不更新列

EXEC Test @Param1 = NULL -- 预期含义:将列设置为 NULL

当然,程序可以检查是否@Param1 IS NULL。但是它可以确定是否已经提供了参数吗?

sql-server stored-procedures t-sql parameter

4
推荐指数
1
解决办法
256
查看次数

表值函数对于插入顺序是否具有确定性?

假设不使用 ORDER BY 子句,在实例化表并用连续插入填充表的 TABLE 值函数中,插入顺序是否具有确定性?

我需要查看发送给我们的给定数据集中使用的 Unicode 字符范围,以便弄清楚为什么 SSMS 中的查询结果中的某些空格(或者至少在眼睛看来是空格)没有被使用。在某些解析例程中,其行为类似于 char(32)。因此,我编写了一个快速而肮脏的函数,将相关列中的字符串值转换为一组可以查询的元组:

create function [foo].[AllChars]
(@in nvarchar(max))
returns @t TABLE (c nchar(1))
as
begin


declare @i int;
while len(@in)>0
begin
   insert @t(c) values (left(@in,1));
   set @in = substring(@in, 2, len(@in)-1)
end

return;
end
Run Code Online (Sandbox Code Playgroud)

可以这样称呼:

   select X.c theChar, unicode(X.c) uValue
   from myTable T
   cross apply foo.AllChars(T.myCol) X
Run Code Online (Sandbox Code Playgroud)

并将为myTable中的每一行返回一组元组:

t  116
h  104
e  101
   32
c  99
a  97
t  116
   10   <= culprit
i  105
n  110
   32 …
Run Code Online (Sandbox Code Playgroud)

sql-server determinism t-sql set-returning-functions non-deterministic

4
推荐指数
1
解决办法
712
查看次数