sql 根据一个字段的值判断显示其他字段的值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql 根据一个字段的值判断显示其他字段的值相关的知识,希望对你有一定的参考价值。

比如一个多选试题的表字段题目、选项A、选项B、选项C、选项D、正确答案对应字段名如下:
topic A B C D ans
测试题目 选项1 选项2 选项3 选项4 A、C
怎样根据ans正确答案字段里的值判断显示出字段A、B、C、D中的内容
比如ans中的值为A、C,则显示出选项1和选项3

请问SQL语句怎么写?多谢
sql server数据库

参考技术A select
case when charindex(a,ans) >0 then a

ELSE '' END as a,

case
when charindex(b,ans) >0 then b

ELSE '' END as b,
case
when charindex(c,ans) >0 then c

ELSE '' END as c,
case
when charindex(d,ans) >0 then d
ELSE '' END as d,
ans

from baby
你这个设计的不太好,应该用两个表,一个表只存有几个选项,另一个表存答案
参考技术B

使用分隔字符串:


create   function   f_splitstrX(@SourceSql   varchar(8000),@StrSeprate   varchar(100))   
  returns   @temp   table(F1   varchar(100))   
  as     
  begin   
  declare   @ch   as   varchar(100)   
  set   @SourceSql=@SourceSql+@StrSeprate     
  while(@SourceSql<>'')   
                  begin   
                  set   @ch=left(@SourceSql,charindex(@StrSeprate,@SourceSql,1)-1)   
  insert   @temp   values(@ch)   
  set   @SourceSql=stuff(@SourceSql,1,charindex(@StrSeprate,@SourceSql,1),'')   
                  end   
  return   
  end   
  
  --使用时 
  declare @ans varchar(200)
  select @ans=ans from 表 where 题目ID=5
  declare @columns varchar(1000)
  set @columns =''
  select @columns=@columns+','+F1 from dbo.f_splitstrX('、',@ans) 
  set @columns=stuff(@columns,1,1,'')
  exec ('select ' +@
 + ' from 表 where 题目ID=5')

参考技术C 什么数据库?下次提问一定要写清楚是什么环境哦,万一别人费了半天劲结果还是数据库不一样多不好

根据其他表单控件更新 Angular Reactive Form 禁用字段的值

【中文标题】根据其他表单控件更新 Angular Reactive Form 禁用字段的值【英文标题】:Update Value of Angular Reactive Form disabled field based on other Form Controls 【发布时间】:2018-08-03 19:30:16 【问题描述】:

我在 Angular 中使用反应式表单,并且有一个禁用的表单控件,该控件是根据其他字段/表单控件的值计算的。当它的依赖字段的值发生变化时,如何更新该禁用字段的值。计算正在运行,但我需要它来订阅其他字段的更改。我创建 FormGroup 的函数如下所示:

createBasket(basket: any) 
    return new FormGroup(
      length: new FormControl(basket.length),
      width: new FormControl(basket.width),
      height: new FormControl(basket.height),
      crossSectArea: new FormControl(value: basket.length * basket.width * basket.height, disabled: true, Validators.required)
    );
  

不确定这是否会改变解决方案,但我也在使用 FormArray 来创建表单组实例的数组。

【问题讨论】:

【参考方案1】:

FormControl API 公开了一个valueChanges observable,您可以订阅它,然后使用setValue 方法在订阅块中强制设置另一个表单控件的值:

ngOnInit() 
  this.basketForm = createBasket(basket);
  const length = this.basketForm.get('length');
  const width = this.basketForm.get('width');
  length.valueChanges.subscribe(val => 
    width.setValue(val * 2);
  );

工作示例:https://stackblitz.com/edit/interdependent-form-controls。

【讨论】:

感谢 vincecampanale 的详细回答。我在其他地方使用自定义验证器,我只是觉得必须有一个更简单的解决方案来解决我的问题,因为我不需要验证任何字段,我只需要在其他字段更改时更新字段的值(计算)。 我第一次完全看错了你的问题,我的错!更新了我的答案,因此它实际上回答了您的问题。 哈哈,不用担心,谢谢!我唯一的问题是如何在 FormArray 中实现它? 很高兴为您提供帮助,我不确定如何根据您提供的代码回答您的问题。如果要在数组中设置控件的值,可以使用FormArray 上的setControl。如果要设置数组的值,可以使用上面显示的setValue 方法。如果您在问题中显示的组是数组的成员,您可以遍历该数组并使用我提到的方法。这取决于您的代码和您要执行的操作,但valueChangessetValue 的通用组合无论如何都可以解决问题。 这里是FormArray API 文档的链接:angular.io/api/forms/FormArray。这些信息有帮助吗?

以上是关于sql 根据一个字段的值判断显示其他字段的值的主要内容,如果未能解决你的问题,请参考以下文章

sql如何判断字段的值是否空值

Symfony4 - 根据其他字段的值验证字段

sql中更新某个字段中部分空值的语句怎样写?

如何根据其他记录的值更新字段

mysql两个字段相差,得到的值AS 另一个字段,这个字段根据这个值判定如>=0,则显示OK,反之显示NG.

在 Django 中,根据模型中其他字段中选择的值删除选择字段下拉列表中的选项