我正在寻找与SQL Server的COALESCE功能等效的Access 2007.
在SQL Server中,您可以执行以下操作:
人
John
Steve
Richard
Run Code Online (Sandbox Code Playgroud)
SQL
DECLARE @PersonList nvarchar(1024)
SELECT @PersonList = COALESCE(@PersonList + ',','') + Person
FROM PersonTable
PRINT @PersonList
Run Code Online (Sandbox Code Playgroud)
产生:约翰,史蒂夫,理查德
我想在Access 2007中做同样的事情.
有谁知道如何在Access 2007中组合这样的行?
我的同事是C#的新手,并不知道合并操作员.所以,我看到他写了一行代码:
string foo = "" + str;
Run Code Online (Sandbox Code Playgroud)
想法是,如果str为null,则此表达式将返回空字符串.当然,这可以改写为:
string foo = str ?? "";
Run Code Online (Sandbox Code Playgroud)
我觉得这会更具可读性.但这真的很重要吗?可读性的好处是否足以建议返回并使这些线看起来像第二个?或者这是我应该学会放手的事情之一(假设我的同事接受了未来最佳方式的教育)?
编辑:只是一个注释,我很欣赏效率评论,但这并没有真正用于任何性能至关重要的情况.因此,虽然这些信息很有趣,但并不一定是我认为重要的信息.
我有一个定义层次结构的表:
Create Table [example] (
id Integer Not Null Primary Key,
parentID Integer Null,
largeData1 nVarChar(max) Null,
largeData2 nVarChar(max) Null);
-- largeData3...n also exist
Insert Into [example] (id, parentID, largeData1, largeData2)
Select 1, null, 'blah blah blah', null Union
Select 2, 1, null, null Union
Select 3, 1, 'foo bar foobar', null Union
Select 4, 3, null, 'lorem ipsum' Union
Select 5, 4, null, null;
Run Code Online (Sandbox Code Playgroud)
此数据的层次结构图:

我想编写一个查询,它将返回任何给定[id]值的单行.该行应包含该行的[id]和[parentID]信息.它还应包含[largeData1 ... n]字段.但是,如果largeData字段为null,则它应该遍历层次结构,直到遇到该字段的非null值.简而言之,它应该像coalesce函数一样运行,除了行的层次结构而不是一组列.
例:
其中[id] = 1:
id: 1
parentID: null
largeData1: blah blah …Run Code Online (Sandbox Code Playgroud) 我想要提出的是这样的表达方式:
var result = Session.QueryOver<Foo>().OrderBy(f => f.UpdatedAt ?? f.CreatedAt);
Run Code Online (Sandbox Code Playgroud)
果然,这不起作用.在T-SQL中粗略相当于此
... order by coalesce(f.UpdatedAt, f.CreatedAt)
Run Code Online (Sandbox Code Playgroud)
在NHibernate QueryOver中进行"合并"的犹太方法是什么?
我有'N'个线程同时在设备上执行,它们需要从全局内存中浮动M*N. 访问全局内存合并的正确方法是什么?在这件事情上,共享内存如何帮助?
我的SQL看起来像这样:
SELECT CompanyName , LastName , FirstName FROM ... JOIN ...
ORDER BY CompanyName , LastName , FirstName
Run Code Online (Sandbox Code Playgroud)
现在的问题是A列有时是空的(或者为NULL或""),我不希望所有这些结果最终都出现.
在这个例子中,我想让第四个条目(以C开头)成为第三个条目.但如果我只是ORDER BY,就会发生这种情况:
Avagax Bauer Frank
Bele AG Smith John
Mork AG Baggins Frodo
Chen Jun
Run Code Online (Sandbox Code Playgroud)
此外,在某些情况下,我有时会有更多的订单列,或者更重要或更不重要.这可能是相关的.
附录:姓氏或公司必须有一个有用的字符串.名字是完全可选的.系统是PostgreSQL(8.4,可能迁移到9),也是SQLite.供应商独立性将是一个优势,因为潜在客户已经在运行Oracle和SQLServer.
我想知道在javascript中是否有一种方法可以使逻辑类似于sql中的coalesce语句,它将以指定的顺序返回数据,如下所示:
Select top 1 Coalesce(ColA, ColB, "No Data Found") from TableA;
Run Code Online (Sandbox Code Playgroud)
是否有一种优雅的方式来处理Javascript中的空值,就像sql在上述语句中返回结果一样?
我知道我可以在技术上有一个switch语句,但这需要一些可能不必要的代码
谢谢.
我正在使用Twig PHP模板引擎.
是否有可用的运算符输出第一个非空值(合并)?
例如(使用PHP伪代码):
{{ title ?: "Default Title" }}
Run Code Online (Sandbox Code Playgroud)
我知道我可以这样做,但有点啰嗦:
{% if title %}{{ title }}{% else %}{{ "Default Title" }}{% endif %}
Run Code Online (Sandbox Code Playgroud) 我有以下命令:
kubectl get pod -A -o=json | jq -r '.items[]|select(any( .status.containerStatuses[]; .state.waiting or .state.terminated))|[.metadata.namespace, .metadata.name]|@csv'
这个命令效果很好。它输出失败 Pod 的命名空间和名称。
但现在我想在结果中再添加一列。我想要的列位于两个位置之一(且仅一个):
我首先尝试添加.status.containerStatuses[].state.*.reason到结果字段数组中。但这给了我一个unexpected '*'编译错误。
然后我开始考虑如何使用 SQL 或其他编程语言来做到这一点。他们经常有一个函数返回其参数的第一个非空值。(这通常称为合并)。但是我找不到任何这样的命令jq。
我如何返回reason查询结果?
我对MSSQL比较陌生,如果这个问题听起来很简单,那就很抱歉.我想用分隔符连接多个字段,.但是,当该字段为空时,额外的内容,也将包含在结果字符串中.那么有一个简单的方法来解决这个问题吗?例如,
SELECT VRI.Street_Number_and_Modifier + ',' +
VRI.Street_Direction + ',' +
VRI.Street_Name + ',' +
VRI.Street_Direction + ',' +
VRI.Street_Suffix + ',' +
VRI.Street_Post_Direction + ',' +
VRI.Unit
FROM View_Report_Information_Tables VRI
Run Code Online (Sandbox Code Playgroud) coalesce ×10
sql ×2
access-vba ×1
c# ×1
gpu ×1
hierarchy ×1
javascript ×1
jq ×1
jquery ×1
json ×1
kubectl ×1
ms-access ×1
nhibernate ×1
queryover ×1
sql-order-by ×1
sql-server ×1
string ×1
twig ×1