我需要CONCAT两个字段,如果它们都存在并在第二个字段周围添加括号.否则我只需要列出第一个字段.
这是简单的版本:
SELECT id, CONCAT(name,' (',nickname,')') as name FROM user;
Run Code Online (Sandbox Code Playgroud)
只要名称和昵称都存在,您应该获得如下结果:
1 | Adam (Alpha Dog)
2 | Bob (Bobby)
3 | Charles (Charlie)
Run Code Online (Sandbox Code Playgroud)
但是,如果没有昵称,它只会跳过整个事情null.例如:id 4,name Doug,nickname null给出结果:
4 | null
Run Code Online (Sandbox Code Playgroud)
我想看到的只是列出名称......像这样:
4 | Doug
Run Code Online (Sandbox Code Playgroud)
所以我开始关注CONCAT IFNULL.但是我很难把它弄好.你能帮我吗?
以下是我尝试过的几个例子:
SELECT id, CONCAT(IFNULL(name, ' (', nickname, ')', name) as name FROM user;
SELECT id, CONCAT(name, IFNULL(' (', nickname, ')')) as name FROM user;
Run Code Online (Sandbox Code Playgroud) 我有一个很长的代码,我们在团队中使用了很长时间.但是几个星期以来,当它在我的机器上编译时,它有问题.代码是针对Intel Atom CPU的交叉编译,并在特定计算机上运行.
当它在我的计算机上编译时,与其他任何人不同,它会导致一个segmentation fault.分段错误来自if不应执行的块内部:
Settings *s = &Global::getSettings();
std::cout << "Pointer value before if : " << s << std::endl;
if(s != 0)
{
std::cout << "Pointer value after if : " << &Global::getSettings() << std::endl;
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
Global::getSettings() 如下:
.
.
.
private:
static __thread Settings* theSettings;
public:
static Settings& getSettings() {return *theSettings;}
.
.
.
__thread Settings* Global::theSettings = 0;
Run Code Online (Sandbox Code Playgroud)
在我的测试中,Global :: theSettings的值没有改变,等于零.上面代码片段的输出是这样的:
Pointer value before if : 0
Pointer value …Run Code Online (Sandbox Code Playgroud) IFNULL()我想以这样的方式使用,我可以选择包含 NULL 的记录,或者如果存在值,则选择与特定值匹配的记录。
我的查询是:
SELECT (@v:=2) AS Row, CL.LeaveTypeId, CL.NumberOfLeave
FROM `CompanyLeave` CL
WHERE(IFNULL(CL.EmploymentType,0)=3);
Run Code Online (Sandbox Code Playgroud)
列EmploymentType可以包含Integer或NULL。
我想选择与指定值匹配的记录,或者,如果没有匹配,则选择包含NULL.
我正在做一个从 MySQL 迁移到 PostgreSQL 的项目,有些函数在 PostgreSQL 中不能很好地工作,比如IFNULL函数。有的教程说在PostgreSQL中我们可以用NULLIF它来处理。当我尝试时,我遇到了一个问题“ argument of NOT must be type boolean, not type integer”。
这是简单的 SQL:
SELECT * FROM `tableA` WHERE not(nullif(columnA, 0));
Run Code Online (Sandbox Code Playgroud)
如何解决?也许有人可以解释它如何运作良好。谢谢
我运行 Postgres 数据库并希望将空字符串转换为NULL。以下片段应该对所有列执行此操作,但它不起作用。
SELECT * FROM schema.table NULLIF(columnname,'');
Run Code Online (Sandbox Code Playgroud)
错误信息是:
ERROR: syntax error at or near "''"
LINE 2: NULLIF(columnname,'');
Run Code Online (Sandbox Code Playgroud) 我试图根据连接表的值查询几个表一个查询.
SELECT a.id,a.name,
IFNULL(b.imageurl, 'default image url') AS 'imageurl',
IFNULL(b.imagecategory, '34') AS 'imagecategory',
IFNULL(b.imagetype, 't') AS 'imagetype'
FROM summary a
LEFT JOIN images i ON a.id = b.id
WHERE b.imagetype = 'thumbnail' AND b.imagecategory = '99'
Run Code Online (Sandbox Code Playgroud)
表'a'是主表,包含有关对象的各种信息.
表'b'由每个对象的几个图像URL组成,这些URL使用'imagetype'和'imagecategory'进行过滤,仅匹配每个对象的一个图像.
只有表'b'具有匹配的id,imagetype和imagecategory时,两个表的连接才有效.如果没有,只返回表'a'中包含它们的记录,这不是我想要的.我希望表'b'返回使用IFNULL函数设置的默认值,所以我得到一个完整的结果集,即使这个表缺少链接id的值:s.
我怎样才能做到这一点?
我似乎无法弄清楚如何在 sql 中使用 isnull 或 ifnull 语句的反义词。我需要说 ifa.Error1不为空——然后打印' - '和 + CHAR(13)+CHAR(10)。如果 a.Error1 返回空值,基本上应该没有破折号或换行符。因此,如果该字段不为空,则打印信息。
select a. ....
' - ' + a.Error1 + CHAR(13)+CHAR(10) +
' - ' + a.Error2 + CHAR(13)+CHAR(10) +
' - ' + a.Error3 + CHAR(13)+CHAR(10) +
' - ' + a.Error4 + CHAR(13)+CHAR(10) +
' - ' + a.Error5 + CHAR(13)+CHAR(10) +
' - ' + a.Error6 as 'error_message'
...
from table1 a
Run Code Online (Sandbox Code Playgroud)
例如,如果对于给定的记录 error1、2 和 5 返回输出,我希望输出如下:
- Error1: …
我在 mongodb 中的聚合中添加了如下条件。
"$match" : {
$ifNull: ["$startDate", "$createdAt"] : {"$gte": ISODate("2018-06-01 10:03:46.000Z"), "$lte": ISODate("2018-06-29 10:03:46.000Z")}
}
Run Code Online (Sandbox Code Playgroud)
当我检查startDate它是否未定义或为空时,我得到了,createdAt但它在执行时显示错误。
我的查询有什么问题?
在获取和设置另一个具有自己独立的getter和setter的类的枚举时,我在类属性中收到构建错误.以下代码的get {}语句中存在两个相同的错误.我不确定如何解决显示的构建错误:'只有赋值,调用,递增,递减,等待和新对象表达式才能用作语句'.
public class Data
{
private IEnumerable<Client> _clientData;
private IEnumerable<Company> _companyData;
public IEnumerable<Client> ClientData
{
get { _clientData ?? (_clientData = new List<Client>()); }
set { _clientData = value; }
}
public IEnumerable<Company> CompanyData
{
get { _companyData ?? (_companyData = new List<Company>()); }
set { _companyData = value; }
}
}
Run Code Online (Sandbox Code Playgroud)