我正在构建一个应该存储在数据库中的每日报价的应用程序.每个报价分配一年中的一天,包括2月29日的一天.由于引用只关心那一天不是一年,我还应该使用smalldatetime类型吗?请让我知道你的意见,谢谢!!
以下数据库视图将日期截断为会计年度(4月1日):
CREATE OR REPLACE VIEW FISCAL_YEAR_VW AS
SELECT
CASE
WHEN to_number(to_char(SYSDATE, 'MM')) < 4 THEN
to_date('1-APR-'||to_char(add_months(SYSDATE, -12), 'YYYY'), 'dd-MON-yyyy')
ELSE
to_date('1-APR-'||to_char(SYSDATE, 'YYYY'), 'dd-MON-yyyy')
END AS fiscal_year
FROM
dual;
Run Code Online (Sandbox Code Playgroud)
这允许我们根据今天的日期计算当前会计年度.
如何简化或优化此计算?
SQL Server 2005中是否有一个函数返回NULL [或一个布尔值],如果任何参数(任何类型)都是NULL,这将使我免于写入IF a IS NULL OR b IS NULL OR c IS NULL ....
我有如下的sql:
select a.dept, a.name
from students a
group by dept, name
order by dept, name
Run Code Online (Sandbox Code Playgroud)
得到结果:
dept name
-----+---------
CS | Aarthi
CS | Hansan
EE | S.F
EE | Nikke2
Run Code Online (Sandbox Code Playgroud)
我想总结每个部门的学生人数如下:
dept name count
-----+-----------+------
CS | Aarthi | 2
CS | Hansan | 2
EE | S.F | 2
EE | Nikke2 | 2
Math | Joel | 1
Run Code Online (Sandbox Code Playgroud)
我该怎么写sql?
假设我有一个包含varchar字段的表.如果我像这样插入:
INSERT MyTable
SELECT N'the string goes here'
Run Code Online (Sandbox Code Playgroud)
这与之间有什么根本区别:
INSERT MyTable
SELECT 'the string goes here'
Run Code Online (Sandbox Code Playgroud)
我的理解是,如果字符串包含Unicode字符且目标列不是unicode,则只会出现问题.除此之外,SQL处理它很好并将字符串N''转换为varchar字段(基本上忽略了N).
我的印象是N在弦乐前面是一个很好的练习,但我无法找到任何关于它的讨论我认为是确定的.
我想从表的字符串列中提取一个单词.
description
===========================
abc order_id: 2 xxxx yyy aa
mmm order_id: 3 nn kk yw
Run Code Online (Sandbox Code Playgroud)
预期结果集
order_id
===========================
2
3
Run Code Online (Sandbox Code Playgroud)
表最多有100行,文本长度为~256个字符,列总是有一个order_id存在.因此,性能不是问题.
在Oracle中,我可以使用REGEXP_SUBSTR此问题.我如何在MySQL中解决这个问题?
编辑1
我正在使用LOCATE和SUBSTR来解决问题.代码很难看.编写代码十分钟后,我正在诅咒编写如此丑陋代码的人.
我没有在MySQL文档中找到REGEXP_SUBSTR函数.但我希望它存在..
回答:为什么不能优化表格?为什么数据以这种愚蠢的方式存储?
我给出的例子只是表示我试图解决的问题.在实际情况中,我使用基于数据库的第三方排队软件来执行异步任务.队列将Ruby对象序列化为文本.我无法控制表结构或数据格式.队列中的任务可以重复出现.在我们的测试设置中,由于过时的数据,一些重复的任务失败了.我必须删除这些任务以防止错误.这种错误并不常见,因此我不想维护规范化的影子表.
是否有一个脚本可用于启用现有表的级联删除.谢谢.
对于什么x是
表达
x IS NOT NULL是不等于NOT(x IS NULL),如在2VL的情况下
(引用这个答案,引用Fabian Pascal 数据库管理中的实际问题 - 思维从业者的参考 - 接近答案的结尾)
我的猜测是什么时候 这个猜测是不正确的.x IS NULL 是 NULL,但我无法猜测是什么时候(即我没有检查SQL标准).
我需要知道在Oracle中的select中返回了多少条记录.目前,我做了两个查询:
SELECT COUNT(ITEM_ID) FROM MY_ITEMS;
SELECT * FROM MY_ITEMS;
Run Code Online (Sandbox Code Playgroud)
我需要知道COUNT但我讨厌做两个查询.有办法吗?
SELECT * FROM MY_ITEMS
Run Code Online (Sandbox Code Playgroud)
然后找出那里有多少条记录?
我有一个包含事务的SQLite数据库,每个事务都有价格和transDate.
我想检索按月分组的事务总和.检索到的记录应如下所示:
Price month
230 2
500 3
400 4
Run Code Online (Sandbox Code Playgroud)