SQL 零而不是 null

发布于 2024-10-01 06:19:15 字数 326 浏览 5 评论 0原文

此函数:

for i in Selection: 
    cursor.execute(Query)
    ydata[i] = [int(x[0]) for x in cursor.fetchall()]

raise:

ValueError: invalid literal for int(): NULL if a null value is found.

如何使我的查询返回零而不是空值,以便我可以解决此问题? (我正在绘制数据,因此我无法将“is not null”添加到我的选择语句中。

This function:

for i in Selection: 
    cursor.execute(Query)
    ydata[i] = [int(x[0]) for x in cursor.fetchall()]

raises:

ValueError: invalid literal for int(): NULL if a null value is found.

How can I make my query return zeros instead of nulls so that I can fix this? (I am plotting the data, so I cannot add "is not null" to my select statement.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

小糖芽 2024-10-08 06:19:15

您可以在查询中使用 case 语句在到达 Python 之前修复此问题:

CASE WHEN FIELD_NAME IS NULL THEN 0 ELSE FIELD_NAME END,

开始编辑

其他 SQL 变体的做法不同(取自其他答案):

COALESCE(FIELD_NAME, 0)

IFNULL(FIELD_NAME, 0)

结束编辑

或者像这样在列表组件中处理它(假设 NULL 是预定义的对象或常量):

ydata[i] = [(int(x[0]) if x[0] != NULL else 0) for x in cursor.fetchall()]

或者创建一个客户转换函数:

def field_to_int(val):
    if val == NULL:
        return 0
    else:
        return int(val)

for i in Selection: 
    cursor.execute(Query)
    ydata[i] = [field_to_int(x[0]) for x in cursor.fetchall()]

You can fix this before it gets to Python with a case statement in your query:

CASE WHEN FIELD_NAME IS NULL THEN 0 ELSE FIELD_NAME END,

begin edit

Other SQL variants do it differently (taken from other answers):

COALESCE(FIELD_NAME, 0)

or

IFNULL(FIELD_NAME, 0)

end edit

Or handle it in your list comp like so (assumes NULL is a predefined object or constant):

ydata[i] = [(int(x[0]) if x[0] != NULL else 0) for x in cursor.fetchall()]

Or create a customer conversion function:

def field_to_int(val):
    if val == NULL:
        return 0
    else:
        return int(val)

for i in Selection: 
    cursor.execute(Query)
    ydata[i] = [field_to_int(x[0]) for x in cursor.fetchall()]
国产ˉ祖宗 2024-10-08 06:19:15

IFNULL(fieldname, 0) AS fieldname放入查询的字段列表中。

Put IFNULL(fieldname, 0) AS fieldname in the field list of the query.

素衣风尘叹 2024-10-08 06:19:15

您可以使用 IFNULL

...IFNULL(MyField, 0) AS MyField...

You'd use IFNULL

...IFNULL(MyField, 0) AS MyField...
碍人泪离人颜 2024-10-08 06:19:15

该错误没有意义; Python 没有“NULL”,它有“None”。

最干净的做法是使用 SQL 合并:SELECT COALESCE(value, 0) 将 SQL NULL 转换为 0。

如果您得到 None,并且您知道这些值是整数,那么您可以安全地说int(x[0]或0)

The error doesn't make sense; Python doesn't have "NULL", it has "None".

The cleanest thing to do is use SQL coalesce: SELECT COALESCE(value, 0) to convert SQL NULL to 0.

If you're getting None, and you know the values are integers, then you can safely say int(x[0] or 0).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文