我有一个关于大小写函数的问题,那么我有291种不同的情况,然后想在一个数组中点一下,并查看数组,这给了我答案。
我想将case语句的291行更改为1。
我正在使用OrderDetails表在https://www.w3schools.com/sql/trymysql.asp?filename=trysql_case上尝试该示例
SELECT OrderID, Quantity,
CASE WHEN Quantity in (12,10,5) THEN Quantity in (1,2,3)
ELSE null
END AS QuantityText
FROM OrderDetails;
我希望此显示;如果数量为12,则显示1 如果数量为10,则显示2 如果数量为5,则显示3
目前的输出是 如果数量为12,则显示0 如果数量为10,则显示0 如果数量为5,则显示0
答案 0 :(得分:4)
我认为一个更合适的解决方案是构建VALUES
的列表并进行查找:
SELECT OrderDetails.OrderID, OrderDetails.Quantity, Lookup.QuantityText
FROM OrderDetails
LEFT JOIN (VALUES
(12, 1),
(10, 2),
( 5, 3)
) AS Lookup(Quantity, QuantityText) ON OrderDetails.Quantity = Lookup.Quantity
由于值列表太大,因此应将其转换为实际表。
答案 1 :(得分:2)
现在在答案中显示这个可能更容易。
正如我们许多人所说,您想要的是一个查询表。让我们采用一个过于简化的public class ViewActivity extends BaseActivity {
@BindView(R.id.lastNameEdt)
EditText lastNameEdt;
@BindView(R.id.firstNameEdt)
EditText firstNameEdt;
@BindView(R.id.middleNameEdit)
EditText middleNameEdit;
User userModel; <-----
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
userModel = new User();
userModel.firstName = lastNameEdt.getText.toString();
}
表达式:
CASE
相反,您将创建一个表,并像这样插入值:
CASE Quantity WHEN 12 THEN '1'
WHEN 10 THEN '2'
WHEN 8 THEN '3'
END AS QuanityText
然后,您可以通过CREATE TABLE dbo.QuantityLookup (Quantity int,
QuantityText varchar(5)); --As it had a name like text, I assumed it should be a varchar
INSERT INTO dbo.QuantityLookup
VALUES(12,'1'),(10,'2'),(8,'3');
或子查询在查询中引用它:
JOIN