MySQL数据库中,一个字段的值有多项内容,如何统计各项内容出现次数?

关系型数据库 Relational DB MySQL 规范 字段命名 字段类型 字段顺序 强制设定为 UNIQUE 索引 关系型数据库(Relational Database)是一种基于关系模型的数据库,它使用表格来组织和存储数据,表格之间通过主键和外键建立关联。这种数据库以行和列的形式存储数据,以便于用户理解,其中一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。MySQL是一种开源的关系型数据库管理系统,它采用了客户端-服务器架构,通过SQL语言来管理和操作数据。 阅读详情

1、遇到的问题

数据库中机构和科室是一对多的关系,多个科室存在一个字段中,现要统计各科室下的机构数。

2、解决思路

将一对多的关系转换成一对一的关系,再进行统计就简单了。

3、解决方法

第一步:创建临时表unit_temp,有一个字段uid

第二步:uid中插入数据0-N,N必须大于需要转换的机构总数。

我这边机构总数是125,所以准备插入200条数据。

此处有遇到了如何插入大量数据的问题。各种查找资料和尝试后,用了存储过程方法。具体参考:https://blog.youkuaiyun.com/weixin_39074559/article/details/89313594

DELIMITER $$
DROP PROCEDURE IF EXISTS `myproc`$$
CREATE PROCEDURE `myproc`()
BEGIN
        
        DECLARE init_data INTEGER DEFAULT 0;
       
        WHILE init_data <= 200 DO 
        
        
        	INSERT INTO unit_temp  VALUES(init_data);
        
        SET init_data = init_data + 1;
        
        END WHILE; 
END$$
DELIMITER ;
CALL myproc();

至此,临时表及数据构造完成。为什么必须从0开始,上面参考文章里有写,也可以自己试试从0开始和从1开始的区别。

第三步:将一对多转化成一对一。具体参考:https://www.cnblogs.com/hs2018/p/9446248.html

SELECT
    u.id,
    SUBSTRING_INDEX(
        SUBSTRING_INDEX(u.department, ',', t1.uid + 1),
        ',' ,- 1
    ) AS DATA
FROM
    ccrt_unit u
JOIN unit_temp t1 ON t1.uid < (
    LENGTH(u.department) - LENGTH(REPLACE(u.department, ',', '')) + 1
)
where u.id in  ('1','54');

第四步:统计各项出现次数。

select  t2.data,count(t2.id)

from 

(
SELECT
    u.id,
    SUBSTRING_INDEX(
        SUBSTRING_INDEX(u.department, ',', t1.uid + 1),
        ',' ,- 1
    ) AS DATA
FROM
    ccrt_unit u
JOIN unit_temp t1 ON t1.uid < (
    LENGTH(u.department) - LENGTH(REPLACE(u.department, ',', '')) + 1
)
where u.id in  ('1','54')
)t2
group by t2.data

 

Mysql 需求实战 字段空置率统计 mysql 表字段空值率统计 阅读详情

相关推荐

统计MySQL数据库中某字段不同值的个数的SQL语句

这样的统计可以帮助我们了解数据的分布情况,从而做出更好的决策。假设我们有一个名为"employees"的表,其中包含了员工的信息,包括员工编号(employee_id)和所属部门(department)字段。需要注意的是,上述SQL语句假定了"employees"表已经在数据库中存在,并且包含了正确的字段和数据。通过这样的SQL语句,我们可以根据实际需求进行各种不同的统计分析,从而更好地理解数据的分布情况。子句,用于筛选满足条件的数据,这里是选择入职日期在2022年1月1日之后的员工。

DfsnVue的博客 2223

Mysql

个人学习笔记,请勿转载

weixin_64613308的博客 3828

OpenVINS实战指南:从环境搭建到RGB-D相机实时建图

本文提供了一份详细的OpenVINS实战指南,涵盖从Ubuntu与ROS环境搭建、依赖安装与编译调试,到连接RGB-D相机进行实时建图的完整流程。重点解决了RealSense D435i等设备的驱动配置、话题对齐及常见问题,并分享了传感器标定与性能优化技巧,帮助开发者快速实现稳定高效的视觉惯性里程计系统。

weixin_29201313的博客 484

将表中一个字段内容放在一起显示

--声明表变量 DECLARE @t TABLE (strID INT,strName NVARCHAR(50)) --插入测试数据 INSERT INTO @t SELECT 1,'A1' UNION ALL SELECT 1,'A2' UNION ALL SELECT 1,'A3' UNION ALL SELECT 2,'B1' UNION ALL SELECT 2,'B2' UNION A

awinliu的专栏 859

NHANES数据库实战:数据合并与加权分析技巧

本文详细解析了NHANES数据库实战中的核心技巧,重点阐述了数据合并与加权分析的正确方法。通过两个具体案例,手把手指导如何从数据下载、合并、权重计算到使用R语言survey包进行加权统计分析,避免因忽略复杂抽样设计而导致的研究偏倚,确保分析结果的准确性与可发表性。

weixin_29057065的博客 585

HOPE:基于强化学习的混合策略路径规划器,适用于多样化停车场景

本文提出了一种混合策略路径规划器(HOPE),用于解决自动停车中的路径规划问题。HOPE结合了强化学习(RL)和Reeds-Shepp(RS)曲线,通过动作掩码机制引导RL智能体的探索,并利用Transformer融合环境感知信息与掩码。该方法在多样且复杂的停车场景中实现了超过97%的成功率,并通过真实实验验证了其泛化能力。此外,本文还提出了基于空间与障碍物分布的停车场景难度分级标准,进一步提升了训练与评估的效率。实验结果表明,HOPE在规划成功率和跨场景泛化能力上均优于传统的基于规则算法和朴素强化学习方法

weixin_42783201的博客 1466

根据某一字段值相同合并字符串 - - SQL

<br />根据某一字段值相同合并字符串 - - SQL<br />做项目的过程中,遇到一个问题,相同id,不同value的记录希望合并成一条记录,value以逗号分隔,从网上搜了搜解决方案,整理如下,备忘。<br /> <br />一、           字符串合并<br />表名:test<br />字段:<br />         id               int<br />         name        nvarchar(50)<br />字段值:<br />        

小棉袄的天空 1万+

allegro 约束管理Constraint Manager(一)

介绍Cadence allegro 约束管理器CM的使用方法。

weixin_38975819的博客 8715

oracle从换行处截取,oracle如何拆分以特定分隔的字段为多行

最近同事遇到一个问题,需要把一个字段内容按照;分隔成多行,通过度娘和查资料终于解决了这个问题,下来就来絮叨一下.刚开始查到的都是replace、substr和instr连用replace语法:replace(字符串,要被替换的字符,替换后的字符)substr语法:substr函数格式 (俗称:字符截取函数)格式1: substr(string string, int a, int b);格式2...

weixin_39808143的博客 1140

[案例四] 智能填写属性工具(支持装配组件还有建模实体属性的批量创建、编辑)

本次案例主要是对上次导出自动导出BOM的一个前处理,要想导出属性,首先的有属性。于是本着学习的态度进行制作,可能有些功能有点别扭(支持装配环境下组件属性的批量填写,支持建模环境下的实体(不包括装配组件实体)——为了减负我把其过滤掉了,一般没人会往装配体里添加进行建模吧,但是不免有奇葩,哈哈哈)。

weixin_47753171的博客 1980

1篇2章1节:在 Mac 上安装 Python,从环境检查到工具配置的完整指南

Python 是当今最流行的高级编程语言之一,广泛应用于数据分析、人工智能、自动化脚本和 Web 开发。虽然 macOS 曾自带 Python,但从 macOS 12.3 开始,系统不再默认提供可直接使用的版本,因此需要手动安装。本文将详细讲解如何在 Mac 上安装最新版本的 Python,如何验证安装是否成功,以及如何配置 IDLE 和 Python Launcher 等工具,为日常开发和学习打下坚实基础。即便你是完全的新手,也能按步骤完成环境搭建。

MD Code 848

mysql 某个字段的值出现次数大于1的

我整理的一些关于【数据】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/eDOcp1如何查询 MySQL 某个字段的值出现次数大于1的记录 在数据库管理中,了解某个字段的值在数据集中出现的频率是非常重要的。这篇文章将教会你如何在 MySQL 中查询某个字段的值出现次数大于1的...

weixin_37080621的博客 494

flowable工作流看这一篇就够了(基础篇)

接下来我们构建一个非常简单的请假流程,Flowable引擎需要流程定义为BPMN 2.0格式,这是一个业界广泛接受的XML标准。在Flowable术语中,我们将其称为一个流程定义(process definition)。一个流程定义可以启动多个流程实例(process instance)。流程定义可以看做是重复执行流程的蓝图。在这个例子中,流程定义定义了请假的各个步骤,而一个流程实例对应某个雇员提出的一个请假申请。

qq_38196449的博客 2万+

oracle 出现次数大于,oracle 查出一个表中字段值出现次数大于2的所有记录

表web_order 列 name ,businesscode, a.account周桥189296092223754031157710000妙药189296092333754031157712344灵丹189296091893754031157710000周桥133296091893754031157713333查出一个表中account 出现次数大于2的所有记录select ...

weixin_32010647的博客 3323

TC3XX - MCAL知识点(三十五):Tasking编译器下,Tc3xx的MCAL代码如何使用多核,多核中断、多核任务、多核外设之间的MCAL配置与代码例程

文章用于记录在裸机情况下使用多核Tc387芯片,如何高效运行以及正确的代码、工程属性、链接文件配置等问题,相互结合、相互影响的地方,以示后续使用记录。

梦想技术家 962

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PHP统计mysql数据表里制定字段内容的总数

在做项目的过程中遇到这样一个问题: 这是我的一个message表,我想将users这个字段里的内容统计出来,然后在界面的指定位置输出这个总数,但是不知道怎么去统计?怎么在对应名字下面,输出对应的统计量?        周转了一上午,各种百度。然后在尝试了许多途径的情况下终于成功了。。下面介绍一下方法。 首先,你得先链接你的数据库(这里省) 然后在你想要输出的地方加上这段代码: <?php

ljw_Josie的博客 5424

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

MySQL中统计bool值变化次数

问题描述:对于如下表,统计它的bool值变化次数,即由0 -> 1的次数。(数据表会通过程序每隔一段时间从指定设备中存入一个bool状态量,如果设备中的值没有变化,那么读取的值也没有变化),分别通过group_contact和触发器进行实现

Suphans的博客 641

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

mysql 统计字段内容的数据

教你如何使用MySQL统计字段内容的数据 作为一名刚入行的开发者,你可能会遇到需要统计数据库中某个字段内容的数据的情况。本文将教你如何使用MySQL来实现这一功能,并通过示例代码帮助你更好地理解整个过程。 1. 统计字段内容的流程 首先,让我们通过一个表格来展示整个统计字段内容的流程: 步骤 描述 1 确定需...

weixin_40575631的博客 329

mysql 统计在某个字段中某个值(指定一个值)出现的总次数

数据库中我们总会碰见自定义类型的字段。那需求来了,要求知道这多种状态个有多少条数据,需要分别(分组)累计(累加、总计)查询出各种状态的个数 select sum(case when mrs.字段名='1' then 1 else 0 end) accomplish, sum(case when mrs.字段名='0' then 1 else 0 end) unfinished from 表名 mrs

槐序二十四的博客 3926

统计mysql数据库中数据表/字段等数量

1、统计数据库一共多少张表 SELECT COUNT(*) TABLES, table_schema FROM information_schema. TABLES WHERE table_schema = 'test' GROUP BY table_schema; 执行结果展示: 2、统计某一张表的字段数量 SELECT COUNT(*) FROM information_schema. COLUMNS WHERE table_schema = 'test' AND ta

tanqingfu1的博客 1万+

mysql统计某字段中某值的次数

现在有两张表 一张用户表us_user(id : 用户ID、group_id : 分组ID、del_flag : 删除标记(0正常、1删除)) 一张分组表us_group(id : 分组ID 、name : 分组名称、del_flag : 删除标记(0正常、1删除)) 如果del_flag为1则不能将数据显示,相当于不存在的数据 要统计选择分组的人数,如果没有人选择也需要显示分组且人数为0...

abb_fyy的博客 2048

SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值

在使用 SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值时,你可以结合 SQLAlchemy 的。:使用 SQLAlchemy 的查询接口和函数来提取 JSON 字段的值,并按这个值进行分组统计。首先,确保你已经安装了 SQLAlchemy。方法来进行分组统计。下面是如何在 SQLAlchemy 中实现这一点的基本步骤。的 JSON 类型字段,我们想要按照。:首先,创建一个数据库引擎来管理连接。:定义一个模型来映射到数据库中的表。的表,其中有一个名为。

NQS__的博客 1808

mysql 一个表内根据字段对应值不同查询统计总数

mysql 一个表内根据字段对应值不同查询统计总数 posted @ 2018-08-14 14:12 戎码壹生 阅读(...) 评论(...) 编辑 收藏

小小程序员的博客 3972

mysql 统计那个数据出现的次数最多

MySQL 数据出现次数统计 在数据库管理中,我们经常需要统计某个字段中数据出现的次数,以便了解数据的分布情况。本文将介绍如何使用MySQL进行数据出现次数的统计,并提供相关的代码示例。 统计数据出现次数的基本方法 在MySQL中,我们可以使用GROUP BY语句和COUNT()函数来统计某个字段中数据出现的次数。基本的语...

weixin_29306011的博客 965

mysql 统计多个字段有一个有致

我整理的一些关于【MySQL,SQL】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://edu.51cto.com/surl=QDW3g3MySQL:统计多个字段有一个有值的查询 引言 在进行数据分析时,尤其是使用数据库系统时,如何有效地统计多个字段是一个常见的需求。在MySQL中,我们经常需要查询多...

weixin_40371012的博客 197

mysql字段包含某个字段统计

实现“mysql字段包含某个字段统计”教程 整体流程 下面是实现“mysql字段包含某个字段统计”的步骤表格: 步骤 操作 1 连接到MySQL数据库 2 编写SQL查询语句 3 使用COUNT函数统计符合条件的记录数 4 执行SQL查询 5 获取结果并输出 操作步骤及代码示例 步骤1:...

weixin_35972199的博客 377
上一篇: 用CSV Data Set Config + 循环,实现批量新建档案的两种方式
wly840239708
博客等级 码龄16年 0粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值