说,我在表中有100列.我不知道特定值可能存在于哪些列中.所以,我想检查所有列,如果它存在于任何100列中,我想选择它.
我搜索了一下,在大多数地方,解决方案似乎如下所示
select *
from tablename
where col1='myval'
or col2='myval'
or col3='myval'
or .. or col100='myval'
Run Code Online (Sandbox Code Playgroud)
我也读了一些论坛,据说这是一个不好的数据库设计案例,我同意,但我正在研究数据库中已有的表.
有更聪明的方法吗?
最近我遇到了一个场景,ISNULL如果第一个字符串为null ,函数将返回截断的数据.
ISNULL(a, b);
Run Code Online (Sandbox Code Playgroud)
我发现a是5个字符,b是10个字符,但是当a为null时,它只返回5个字符b而不是全长.
这是一个已知的问题?
我有下表,我想根据业务范围仅选择上个月.
这些原始表:
fk_month fk_business_area
201706 8
201707 25
201707 27
201707 9
201707 8
201707 28
201707 26
201708 9
Run Code Online (Sandbox Code Playgroud)
选择后,我想要这个结果:
fk_month fk_business_area
201707 25
201707 27
201707 8
201707 28
201707 26
201708 9
Run Code Online (Sandbox Code Playgroud)
问候.
这显然会将myDate的空值放在结果集的底部.这是如何被执行的逻辑是什么?
SELECT * FROM myTable
WHERE ...
ORDER BY CASE WHEN myDate IS NULL THEN 1 ELSE 0 END, myDate;
Run Code Online (Sandbox Code Playgroud) 我不知道是否可以在没有迭代游标和填充临时表的情况下进行操作.我无法选择如下所示的数据:
+----------+-----------+-----------+
|TypeName | AlarmType | AlarmCount|
+----------+-----------------------+
|Antibody | 1 | 2 |
|Bacterium | 1 | 2 |
|Bacterium | 3 | 2 |
|CellLine | 1 | 2 |
+----------+-----------+-----------+
Run Code Online (Sandbox Code Playgroud)
进入这样的结果(有3种不同的AlarmType但列出了2种):
+----------+-------+-------+-------+
|TypeName | Alarm1| Alarm2| Alarm3|
+----------+-------+-------+-------+
|Antibody | 2 | 0 | 0 |
|Bacterium | 2 | 0 | 2 |
|CellLine | 2 | 0 | 0 |
+----------+-------+-------+-------+
Run Code Online (Sandbox Code Playgroud)
如您所见,AlarmCount现在显示在相应的下面AlarmType,现在是列.如果不可能做到这一点,"没有游标就不能这样做",这也是一个很好的答案.
有人可以帮我解决下面的代码吗?
CASE Table1.Column1
WHEN 'a' THEN '1'
CASE Table2.Column2
WHEN 'b' THEN '2'
WHEN 'c' THEN '3'
ELSE '4'
END AS [Test],
Run Code Online (Sandbox Code Playgroud)
我试图从Table1.Column1和Table2.Column2列中的一个新列(Test)中获取值.谢谢.
我想使用 Laravel 查询生成器将 sales.price 与商家.commission 相乘。目前我的查询看起来像这样,但不幸的是我不知道该怎么做。非常感谢您的帮助。
DB::table('sales')
->leftJoin('merchants', 'sales.merchant', '=', 'merchant.id')
->sum("");
Run Code Online (Sandbox Code Playgroud) 我需要帮助增加(以及) 在一个字符串中的每个字符/数(不包括.从字符串).例如,我需要将字符串转换a.3.1为(a).(3).(1)
我正在使用sql server 2008 r2
提前致谢.
sql sql-server sql-server-2008 reporting-services ssrs-2008-r2
Parallelism(Distribute Streams)中的操作是什么Execution plan?为什么它增加了上一个操作的行数。
询问 :
SELECT TOP 5000 MM.MEMBER_ID,
MM.MEMBER_NO,
MM.MEMBER_NAME,
MM.TRADE_CLASS,
MT.DESCRIPTION,
MS.DESCRIPTION,
MAI.ADDRESS_1,
MAI.ADDRESS_2,
MAI.CITY,
MAI.STATE,
MAI.ZIP
FROM MEMBER_MASTER MM
INNER JOIN MEMBER_TYPE MT
ON MT.CODE = MM.MEMBER_TYPE
INNER JOIN MEMBER_STATUS MS
ON MS.CODE = MM.MEMBER_STATUS
INNER JOIN MEMBER_ADDRESS_INFO MAI
ON MM.MEMBER_ID = MAI.MEMBER_ID
WHERE MAI.PRIMARY_ADDRESS_FLAG = 'YES'
Run Code Online (Sandbox Code Playgroud)
执行计划:

从上面的执行计划可以清楚地看到行数从39,771增加到1,272,672。为什么会发生这种情况?
这是一段正在处理的代码
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Enter the number to find factorial : ");
var fac = Convert.ToInt32(Console.ReadLine());
var res = 1;
for (var i = fac; i >= 1; i--)
{
res = res * i;
}
Console.WriteLine("Count of " + fac + " is : " + res);
}
}
Run Code Online (Sandbox Code Playgroud)
我想fac在结果中添加用户输入的输入。这是Console.WriteLine("Count of " + fac + " is : " + res);用来在我的控制台中显示输出。
我尝试了类似的东西
Console.WriteLine("Count of {0} is : {1} ", fac, …Run Code Online (Sandbox Code Playgroud)