npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@stroll/field

v0.0.10

Published

fieldType

Downloads

3

Readme

fieldType

字段类型

安装

npm i -S @stroll/field

引入

import FieldTypes from '@stroll/field'
// OR
import {
  fieldAttrType, // 字段属性类型
  fieldVerifyOutput,// 字段验证输出
  fieldValidateType, // 字段验证类型
  FieldTypeKeys, /** 字段类型范围 */
  FieldTypes /** 字段验证 */
} from '@stroll/field'

使用

FieldTypes.TINYINT
FieldTypes.SMALLINT
...

TINYINT

  • 一个很小的整数。
  • 有符号的范围是-128到127,无符号的范围是0到255。
  • 存储大小为 1 字节大小

SMALLINT

  • 一个小整数。
  • 有符号的范围是-32768到32767,无符号的范围是0到65535。
  • 存储大小为 2 个字节大小

MEDIUMINT

  • 一个中等大小整数。
  • 有符号的范围是-8388608到8388607,无符号的范围是0到16777215。
  • 存储大小为 3 个字节大小

INT

  • 一个正常大小整数。
  • 有符号的范围是-2147483648到2147483647,无符号的范围是0到4294967295。
  • 存储大小为 4 个字节大小

INTEGER: 这是INT的一个同义词。

BIGINT

  • 一个大整数。
  • 有符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到18446744073709551615。
  • 存储大小为 8 个字节大小
  • 注意,所有算术运算用有符号的BIGINT或DOUBLE值完成,
  • 因此你不应该使用大于9223372036854775807(63位)的有符号大整 数,除了位函数!
  • 注意,当两个参数是INTEGER值时,-、+和*将使用BIGINT运算!这意味着如果你乘2个大整数(或来自于返回整数的函数),
  • 如果结果大于9223372036854775807,你可以得到意外的结果。
  • 一个浮点数字,不能是无符号的,对一个单精度浮点数,其精度可以是<=24,对一个双精度浮点数,是在25和53之间,这些类型如FLOAT和DOUBLE类型马上在下面描述。
  • FLOAT(X)有对应的FLOAT和DOUBLE相同的范围,但是显示尺寸和小数位数是未定义的。

FLOAT

  • 一个小(单精密)浮点数字。
  • 不能无符号。
  • 允许的值 是 -3.402823466E+38 到 -1.175494351E-38 ,0 和 1.175494351E-38 到 3.402823466E+38 。
  • M是显示宽度而D是小数的位数。
  • 没有参数的FLOAT或有<24 的一个参数表示一个单精密浮点数字。

DOUBLE

  • 一个正常大小(双精密)浮点数字。
  • 不能无符号。
  • 允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308。
  • M是显示宽度而D是小数位数。
  • 没有一个参数的 DOUBLE或FLOAT(X)(25 < = X < = 53)代表一个双精密浮点数字。

REAL: 与DOUBLE同义词。

DECIMAL

  • 一个未压缩(unpack)的浮点数字。
  • 不能无符号。
  • 行为如同一个CHAR列:“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符。
  • 小数 点,并且对于负数,“-”符号不在M中计算。
  • 如果D是0,值将没有小数点或小数部分。
  • DECIMAL值的最大范围与DOUBLE相同,但是对一个给定的 DECIMAL列,实际的范围可以通过M和D的选择被限制。
  • 如果D被省略,它被设置为0, 范围是 0 - 30
  • 如果M被省掉,它被设置为10,范围是 1 - 65

NUMERIC: 这是DECIMAL的一个同义词。

TEXT: 一个TEXT列,最大长度为65535(2^16-1)个字符。

CHAR

  • 一个定长字符串,当存储时,总是是用空格填满右边到指定的长度。
  • 不管汉字还是数字或者是字母都算是一个字符(空格也算)。
  • 一个汉字字符用utf8占用3字节大小,用gbk占用2字节大小。
  • M的范围是1 ~ 255个字符。
  • 当值被检索时,空格尾部被删除。
  • CHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词。
  • NATIONAL CHAR(短形式NCHAR)是ANSI SQL的方式来定义CHAR列应该使用缺省字符集。
  • CHAR是CHARACTER的一个缩写。
  • 一般情况下,char会造成空间浪费,但是有速度优势;
  • 尾部有空格会被截断,所以查询出来的结果最好trim一下

VARCHAR

  • 一个变长字符串。
  • 不管汉字还是数字或者是字母都算是一个字符(空格也算)。
  • 一个汉字字符用utf8占用3字节大小,用gbk占用2字节大小。
  • 注意:当值被存储时,尾部的空格被删除(这不同于ANSI SQL规范)。
  • M的范围是1 ~ 255个字符。
  • VARCHAR值根据缺省字符集以大小写不区分的方式排序和比较,除非给出BINARY关键词值。
  • VARCHAR是CHARACTER VARYING一个缩写。
  • VARCHAR节省了空间,但是速度就不如char。

TINYTEXT: 一个TEXT列,最大长度为255(2^8-1)个字符。

MEDIUMTEXT: 一个TEXT列,最大长度为16777215(2^24-1)个字符。

BLOB: 一个BLOB列,最大长度为65535(2^16-1)个字符。

BINARY: 一个二进制列,最大长度为256个字符。

BIT

  • 二进制 类型数据。
  • 1 - 64 位之间,默认位值为 1
  • 每个二进制数字0或者1就是1个位
  • 每8个位 是一个字节
  • 例子 BIT(1)

DATE

  • 一个日期。
  • 支持的范围是'1000-01-01'到'9999-12-31'。
  • 以'YYYY-MM-DD'格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列。

TIME

  • 一个时间。
  • 范围是'-838:59:59'到'838:59:59'。
  • 以'HH:MM:SS'格式来显示TIME值,但是允许你使用字符串或数字把值赋给TIME列。

YEAR

  • 一个2或4位数字格式的年(缺省是4位)。
  • 允许的值是1901到2155,和0000(4位年格式),如果你使用2位,1970-2069(70-69)。
  • 以YYYY格式来显示YEAR值,但是允许你把使用字符串或数字值赋给YEAR列。

DATETIME

  • 一个日期和时间组合。
  • 支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
  • 以'YYYY-MM-DD HH:MM:SS'格式来显示DATETIME值,但是允许你使用字符串或数字把值赋给DATETIME的列。

TIMESTAMP

  • 一个时间戳记。
  • 范围是'1970-01-01 00:00:00'到2037年的某时。
  • 以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显示TIMESTAMP值,取决于是否M是14(或省略)、12、8或6,
  • 但是允许你使用字符串或数字把值赋给TIMESTAMP列。
  • 一个TIMESTAMP列对于记录一个INSERT或UPDATE操作的日期和时间是有用的,
  • 因为如果你不自己给它赋值,它自动地被设置为最近操作的日期和时间。
  • 你以可以通过赋给它一个NULL值设置它为当前的日期和时间。

SET

  • 一个集合。
  • 能有零个或多个值的一个字符串对象,其中每一个必须从值列表'value1', 'value2', ...选出。
  • 一个SET最多能有64个成员。
  • SET('value1','value2',...)

ENUM

  • 枚举。
  • 一个仅有一个值的字符串对象,这个值式选自与值列表'value1'、'value2', ...,或NULL。
  • 一个ENUM最多能有65535不同的值。
  • ENUM('value1','value2',...)

JSON

  • json 类型数据。
  • 自动验证存储在JSON列中的 JSON 文档。无效的文档会产生错误。
  • JSON列不能为NULL的默认值。

BOOLEAN

  • boolean 类型数据。
  • true 和 false
  • 内部使用 TINYINT(1) 实现
  • 0 为 false,非 0 为 true

BOOL

  • boolean 类型数据。
  • 同 BOOLEAN