我有如下查询:
SELECT t1.v3, t2.v2
FROM t1
INNER JOIN t2
ON t1.v1 = t2.v1
WHERE ISNULL(t1.DeleteFlag,'N') = 'N'
Run Code Online (Sandbox Code Playgroud)
我有一个索引,我认为应该导致该= 'N'部分的索引搜索,但我看到一个非常昂贵的索引扫描.索引是否可能搞乱索引的正确使用?在列上只有一些可能的值(如DeleteFlag意志)的索引是否有意义?
是否有类似ISNULL()或COALESCE()的东西,但不是检查空值而是空值.
例如:
SELECT cu.last_name, cu.first_name, cu.email, hu.email FROM
(SELECT DISTINCT c.first_name, c.last_name, c.email, c.household_id, h.head_of_household_id
FROM rd_customers c
JOIN rd_households h ON c.household_id = h.household_id
JOIN ad_registrations r ON r.customer_id = c.customer_id
JOIN ad_meeting_times a ON r.session_id = a.session_id and a.meeting_time_id = 203731) cu
LEFT JOIN rd_customers hu ON hu.customer_id = cu.head_of_household_id
Run Code Online (Sandbox Code Playgroud)
而不是返回四列我想得到三个,而第三个假设有cu.email或hu.email的值,如果第一个是EMPTY!ISNULL和COALESCE不在这里工作我不知道为什么
根据我的理解,IsNull函数检查第一个值,如果它为null或空白,则返回下一个值.
SELECT ISNULL(1,getdate())
Run Code Online (Sandbox Code Playgroud)
但上述陈述给出了错误.任何人都可以帮助突出原因吗?
我正在寻找一个函数来检查列是否具有与该isnull()函数类似的值0 .
这是我到目前为止所得到的:
CONCAT(
SUBSTRING_INDEX(
SUBSTRING(textCol, 1,
LOCATE(DATE_FORMAT(dateCol,'%d.%m.%Y %H:%i'), textCol)-1),
'|',
-1),
SUBSTRING(
textCol,
LOCATE(DATE_FORMAT(dateCol,'%d.%m.%Y %H:%i'), textCol),
IFNULL(
LOCATE( /* this will return 0 if it's the last entry */
'|',
textCol,
LOCATE(DATE_FORMAT(dateCol,'%d.%m.%Y %H:%i'), textCol)
) - LOCATE(DATE_FORMAT(dateCol,'%d.%m.%Y %H:%i'), textCol),
LENGTH(textCol))))
Run Code Online (Sandbox Code Playgroud)
textCol中的数据有点像CSV文件,每列中都有另一个CSV文件.每个数据集由分隔的|每个数据集分隔&&.内部字段是名称,日期'%d.%m.%Y %H:%i'和评论.
我想提取与我所进入的某个DATETIME相对应的数据集dateCol.问题是,如果我正在寻找的那个是最后一个条目textCol,那么LOCATE(见注释)会返回0.但这会打破我,SUBSTRING所以只返回条目的前半部分.
我添加了一个ISNULL(),当然这里没有做任何事情.我想做的是有类似于ISNULL()那种类似的东西ISZERO(),就像||Perl中的运算符一样.
可能有一种更好的方式来实现我想要的.请不要犹豫告诉我.
假设我有一个JavaScript对象:
var obj = {};
obj.computers = {};
obj.computers.favorite = "Commodore 64";
obj.computers.popular = "Apple";
Run Code Online (Sandbox Code Playgroud)
现在,我可以轻松检查null,如:
if(obj != 'undefined' && obj != null) {
if(obj.computers != 'undefined' && obj.computers != null)) {
.....
Run Code Online (Sandbox Code Playgroud)
如您所见,如果我需要查看是否obj.computers.favorite已设置,我必须在那里嵌套一些条件逻辑.我们的一些物体深入3,4,5级.
这是我希望能够做到的:
var fav = obj.computers.favorite || 'Unknown';
Run Code Online (Sandbox Code Playgroud)
但我意识到我需要用某种方法包装它.就像是:
var fav = getValueOrDefault(obj.computers.favorite, 'Unknown');
Run Code Online (Sandbox Code Playgroud)
建议表示赞赏.
谢谢
编辑
我检查'undefined'实际上并不是我使用的.在提出这个问题时,我只是想到了.大声笑
但我想知道,如果异常,我可以在try/catch中包装并抛出默认值吗?
function(obj, default) {
try {
if(obj != null) {
return obj;
} else {
return default;
}
} catch(ex) {
return default;
}
}
Run Code Online (Sandbox Code Playgroud)
此外,感谢Shusi指出冗余的变量.
我有以下代码:
SELECT FirstName, LastName,
(SELECT ISNULL(COUNT(UP1.EmailAddress), 0) AS HasEmail
From dbo.UserProfiles AS UP1
WHERE (NOT (UP1.EmailAddress IS NULL)) AND (CreatedBy = dbo.UserProfiles.UserID)
GROUP BY CreatedBy) AS EmailEnteredCount FROM dbo.UserProfiles WHERE (IsStaff = 1)
Run Code Online (Sandbox Code Playgroud)
样本结果:
姓氏EmailEnteredCount
帐单为空
拉尔森51
佳士得30
零值
senac NULL
该代码可以正确执行,但有一个例外,当未找到任何记录而不是预期的0时,它将返回一个空值。
更新:这将返回我要完成的工作,只是需要一个更清洁的解决方案。我真的不认为我需要创建一个临时表来替换一个空值。
drop table #tt
select userid,firstname, lastname,
(
SELECT count(*) AS HasEmail
FROM dbo.UserProfiles AS UP1
WHERE (UP1.EmailAddress IS NOT NULL)AND (UP1.CreatedBy = UserProfiles.UserId) and (datecreated between @startdate and @enddate)
GROUP BY CreatedBy
) as EmailCount
into #tt …Run Code Online (Sandbox Code Playgroud) 当Address2列为空时,此行:
string address2 = sqlD8aReader.GetString(ADDRESS2_OFFSET);
Run Code Online (Sandbox Code Playgroud)
......失败了:
System.Data.SqlTypes.SqlNullValueException was unhandled by user code
HResult=-2146232015
Message=Data is Null. This method or property cannot be called on Null values.
Source=System.Data
StackTrace:
at System.Data.SqlClient.SqlBuffer.get_String()
at System.Data.SqlClient.SqlDataReader.GetString(Int32 i)
at HandheldServer.Models.SQLServerPOCRepository..ctor() in c:\HandheldServer\HandheldServer\Models\SQLServerPOCRepository.cs:line 58
InnerException:
Run Code Online (Sandbox Code Playgroud)
如何安全地读取可能为null的字符串?它应该以某种方式在SQL中处理(如果是这样,如何?)还是应该在read/C#代码中处理?
在我的代码中,我有一个org.apache.tapestry5.json.JSONObject名字j.我想use-name从该Object 读取属性:
Boolean isUseName = (Boolean) j.opt("use-name");
Run Code Online (Sandbox Code Playgroud)
值可以是true,false或null(如果JSONObject中不存在该条目).现在我想用isUseName一个条件语句:
if(!isUseName) {System.out.println("No Name to be used.")}
Run Code Online (Sandbox Code Playgroud)
如果"use-name"不在JSONObject中,这会给我一个NullPointerException.一种方法是简单地先检查是否isUseName为空,例如
if(isUseName != null && !isUseName) {System.out.println("No Name to be used.")}
Run Code Online (Sandbox Code Playgroud)
我想知道,如果有更优雅的方式.isUseName如果j.opt()返回null ,是否可以(自动)设置为false ?我想到的一件事是使用三元表达式,但这有多余j.opt("use-name"):
Boolean isUseName = (j.opt("use-name") != null)
? (Boolean) j.opt("use-name")
: false;
Run Code Online (Sandbox Code Playgroud) 我在pyspark中使用自定义函数来检查spark数据帧中每一行的条件,如果condition为true则添加列.
代码如下:
from pyspark.sql.types import *
from pyspark.sql.functions import *
from pyspark.sql import Row
def customFunction(row):
if (row.prod.isNull()):
prod_1 = "new prod"
return (row + Row(prod_1))
else:
prod_1 = row.prod
return (row + Row(prod_1))
sdf = sdf_temp.map(customFunction)
sdf.show()
Run Code Online (Sandbox Code Playgroud)
我在下面提到了错误:
AttributeError:'unicode'对象没有属性'isNull'
如何检查自定义函数中当前行中特定列的空值?
isnull user-defined-functions apache-spark pyspark spark-dataframe
我有这个记录:
SELECT sc.no, scl.quantite, scl.description, scl.poids, scl.prix, sl_ref.refsl, sl_ref.codetva, sl_ref.tauxtva, sl_ref.compte
FROM shop_commande
AS sc, shop_commande_ligne AS scl, selectline_ref AS sl_ref
WHERE sc.id = scl.shop_commande_id
AND sl_ref.refshop = ISNULL(scl.shop_article_id, 0)
AND sc.id NOT IN (SELECT id_command FROM selectline_flag)
Run Code Online (Sandbox Code Playgroud)
有时,在sl_shop_article_id中,有一个NULL值。我想要的是将其替换为0,这样子句:
sl_ref.refshop = scl.shop_article_id
Run Code Online (Sandbox Code Playgroud)
即使scl.shop_article_id为NULL 也可以工作。为此,我尝试使用ISNULL函数,但它使请求出错,并且出现错误:
1582-对本机函数“ ISNULL”的调用中的参数计数不正确
如何使用?
isnull ×10
sql ×3
sql-server ×3
coalesce ×2
mysql ×2
t-sql ×2
apache-spark ×1
c# ×1
date ×1
java ×1
javascript ×1
pyspark ×1
substring ×1
where ×1
zero ×1