如何返回包含列元胞数组中特定值的行?
想象一下我们有一个像这样的表:
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)因此,如果更容易的话,可以使用该功能的可能性。请注意,值数组的长度可能彼此不同。
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 …
我们设置了 SQL Server 2014 Always ON,其中包含一个主要副本和一个辅助副本。我一直在使用 Dell LiteSpeed 在辅助副本上进行数据库备份(完整和 tlog),以便从主副本卸载该流量。我们让一位开发人员截断了一个重要的表,因此我们不得不从完整备份和 tlog 备份中恢复主数据库。在恢复之前,我首先在主数据库上进行了完整的数据库备份,并注意到它只有 34 GB,而辅助数据库的备份几乎是 70 GB。恢复后,人们抱怨性能很慢。我的问题是为什么辅助副本上的数据库备份是主副本的两倍。TIA。
我们有一个大约 3 TB 的 SQL Server 2014 企业版数据库。我们每周都进行压缩完整备份,直到上周它都运行良好,现在突然需要 18 个小时才能完成。
备份完成后,备份大小约为 550 GB。
备份驱动器有大约 950 GB 的可用磁盘空间。
可能是什么问题?
我有一些使用该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)
还应该在最终结果中将此条目返回给我。有人可以建议任何解决方法吗?
这个问题是关于 Microsoft SQL Server 中的模拟。我想知道,如果我对特定登录拥有模拟权限,那么我可以随时轻松地模拟该登录,并且不需要使用EXECUTE AS OWNER?的存储过程。如果是这样,那么存储过程的目的是什么EXECUTE AS?
如果不是,为什么?
在安全审计期间,我们被问及 dbo 登录是否是交互式的。我的理解是账户是由SQL server自己自动创建和管理的,不是直接交互的。
我试图在证明一个系统管理员的用户将出现在SESSION_USER作为dbo身份验证时,但他们不完全相信。他们现在的问题是是否可以通过使用其密码登录来直接对 dbo 进行身份验证。
这可能吗?我什至不知道在哪里可以找到 dbo 的密码,如果有的话。
我们正在运行一个 Aurora PostgreSQL 集群,其中包含一个只读副本和主节点。
定期出现非常重的写入负载,导致较高的复制延迟。这可能会导致只读副本重新启动,这对于高可用性环境中的我们来说是不希望的。发生这种情况时,通过只读端点连接到集群的客户端会收到此 JDBC 错误:org.postgresql.util.PSQLException: FATAL: the database system is starting up。此外,AWS 控制台在日志中显示了这些内容:
只读副本已经落后于主数据库太多了。重新启动 postgres。
其次是
数据库实例已重新启动
我们可以容忍只读副本落后几分钟,但不能容忍只读副本重新启动才能赶上。
有没有办法防止只读副本在这些时间段内重新启动?
或者,是否有任何建议的调整可以减少写入负载较重期间的复制延迟?
我有一个存储过程,用可选参数@Param1 int = NULL 说“测试”。在该过程中,@Param1 的值用于更新某个表中某个列的值,如果调用者提供了一个值。如果未提供该参数,则不会更新该列。不幸的是,该列允许 NULL,因此调用者无法将列值设置为 NULL。所以,问题是:程序是否能够区分以下两个调用?
EXEC Test -- 预期含义:不更新列
EXEC Test @Param1 = NULL -- 预期含义:将列设置为 NULL
当然,程序可以检查是否@Param1 IS NULL。但是它可以确定是否已经提供了参数吗?
假设不使用 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
sql-server ×6
backup ×2
t-sql ×2
aws-aurora ×1
case ×1
db2 ×1
determinism ×1
json ×1
mysql ×1
mysql-5.7 ×1
parameter ×1
permissions ×1
postgresql ×1
redshift ×1
replication ×1
security ×1