modify sql

This article explores JSON_MODIFY() function to modify JSON Data in the SQL Server.

本文探讨了JSON_MODIFY()函数来修改SQL Server中的JSON数据。

介绍 (Introduction)

Java Script Object Notation is a popular language in major NoSQL databases and applications for mobile development. SQL Server 2016 introduced native support for JSON. Suppose you define a variable in SQL Server and it holds JSON key-value pairs.

Java脚本对象表示法是主要的NoSQL数据库和用于移动开发的应用程序中的流行语言。 SQL Server 2016引入了对JSON的本机支持。 假设您在SQL Server中定义了一个变量,并且该变量包含JSON键值对。

We use JSON_MODIFY() function to update the JSON string. It can update the following items:

我们使用JSON_MODIFY()函数更新JSON字符串。 它可以更新以下项目:

  • Update existing property value 更新现有属性值
  • Add a new element in an existing array 在现有数组中添加新元素
  • Delete a property from JSON string 从JSON字符串中删除属性
  • Delete a property 删除属性

JSON_MODIFY()函数的语法 (Syntax of JSON_MODIFY() function)

JSON_MODIFY (expression, path, newValue)

JSON_MODIFY(表达式,路径,newValue)

  • Expression: It is the JSON Data string that we want to update. It might be a variable or a column containing JSON 表达式 :这是我们要更新的JSON数据字符串。 它可能是变量或包含JSON的列
  • Path: We specify the property that requires an update in the JSON string. It requires the following arguments:

    路径:我们在JSON字符串中指定需要更新的属性。 它需要以下参数:

    [append] [lax | strict] $.<json path>

    [附加] [宽松| 严格] $。<json路径>

    • Append: It is an optional argument, and it specifies a new value that should be appended to the array 追加:这是一个可选参数,它指定了应该附加到数组的新值
    • Lax: it is the default mode in the path argument. Suppose we specify a property in the path argument that does not exist, in this case, the JSON_MODIFY function tries to insert the specified new value. It might give you an error message in case it cannot insert the value 宽松:这是path参数中的默认模式。 假设我们在path参数中指定了一个不存在的属性,在这种情况下,JSON_MODIFY函数尝试插入指定的新值。 万一无法插入值,可能会给您一条错误消息
    • Strict: In the strict mode, if the property we specified does not exist, it does not try to insert the value. You get an error message 严格:在严格模式下,如果我们指定的属性不存在,则它不会尝试插入该值。 您收到一条错误消息
    • Json_path: it contains the property path that we wish to update Json_path:它包含我们要更新的属性路径
  • New value: It is the new value that we require to update in the JSON 新值:这是我们需要在JSON中更新的新值

Let’s understand the usage of the JSON_MODIFY() function using examples.

让我们使用示例来了解JSON_MODIFY()函数的用法。

示例1:更新JSON属性值 (Example 1: Update JSON property value)

In the below example, we have key-value pair for Brand and Product key. Suppose you wish to update the product value in this JSON, we can use the following code using JSON_MODIFY().

在以下示例中,我们具有“品牌”和“产品”键的键/值对。 假设您希望更新此JSON中的产品值,我们可以使用以下代码使用JSON_MODIFY()。

SELECT JSON_MODIFY('{"Brand":"HP","Product":"Laptop"}', '$.Product', 'Laptop') AS 'Updated JSON';

It returns the updated JSON string in the output.

它在输出中返回更新的JSON字符串。

In this example, note the following things.

在此示例中,请注意以下事项。

  • First argument expression contains original JSON {“Brand”:”HP”,”Product”:”Laptop”}
  • 第一个参数表达式包含原始JSON {“ Brand”:“ HP”,“ Product”:“ Laptop”}
  • $.Product is the property path that we want to update
  • $ .Product是我们要更新的属性路径
  • laptop is a new value that we want to update in the $.Product key 笔记本电脑是我们要在$ .Product键中更新的新值。

示例2:获取原始和更新的JSON数据 (Example 2: Get original and updated JSON data)

Suppose for comparison, we want both original (before the update) and updated (after update) JSON data in the output. In this query, we declared a variable and stored JSON into it. Later, we used JSON_MODIFY() function to get the updated JSON.

为了进行比较,我们希望输出中同时包含原始(更新之前)和更新(更新之后)JSON数据。 在此查询中,我们声明了一个变量并将JSON存储到其中。 稍后,我们使用JSON_MODIFY()函数获取更新的JSON。

DECLARE @OriginalJSON NVARCHAR(4000)
Set @OriginalJSON='{"Brand":"HP","Product":"Laptop"}'
Select@OriginalJSON as 'Before Update',JSON_MODIFY(@OriginalJSON,'$.Product', 'Laptop') AS 'Updated JSON';

In the output, we get both original and updated JSON.

在输出中,我们同时获取原始和更新的JSON。

In the below query, note the following:

在下面的查询中,请注意以下几点:

  • Variable @path contains the required value for the update 变量@path包含更新所需的值
  • Specify variable in the JSON_MODIFY() function 在JSON_MODIFY()函数中指定变量
DECLARE @OriginalJSON NVARCHAR(4000), @newvalue varchar(30),@path varchar(20)
Set @OriginalJSON='{"Brand":"HP","Product":"Laptp"}'
Set @newvalue='Laptop'
set @path='$.Product'
Select@OriginalJSON as 'Before Update',JSON_MODIFY(@OriginalJSON,@path, @newvalue) AS 'Updated JSON';

示例3:添加一个新的JSON属性 (Example 3: Add a new JSON property)

In this example, we specify a new property $.Quantity along with its value. As we know, by default, JSON_MODIFY() function uses lax path mode, so it inserts this new property because it does not exist in the original JSON string.

在此示例中,我们指定一个新属性$ .Quantity及其值。 众所周知,默认情况下,JSON_MODIFY()函数使用宽松的路径模式,因此会插入此新属性,因为它在原始JSON字符串中不存在。

DECLARE @OriginalJSON NVARCHAR(4000)
Set @OriginalJSON='{"Brand":"HP","Product":"Laptop"}'
Select@OriginalJSON as 'Before Update',JSON_MODIFY(@OriginalJSON,'$.Quantity',10) AS 'Updated JSON';

You can see it inserts the property using JSON_MODIFY() function if the property does not exist.

您可以看到它使用JSON_MODIFY()函数插入该属性(如果该属性不存在)。

Let’s specify strict path mode for the above example, and it does not insert the property in JSON as it does not exist.

让我们为上述示例指定严格路径模式,由于该属性不存在,因此不会在JSON中插入该属性。

DECLARE @OriginalJSON NVARCHAR(4000)
Set @OriginalJSON='{"Brand":"HP","Product":"Laptop"}'
Select@OriginalJSON as 'Before Update',JSON_MODIFY(@OriginalJSON,'strict$.Quantity',10) AS 'Updated JSON';

示例4:添加一个包含数组的新JSON属性 (Example 4: Add a new JSON property containing an Array)

In the previous example, we added a new property that contains a value. We can have an array in the JSON as well.

在前面的示例中,我们添加了一个包含值的新属性。 我们也可以在JSON中有一个数组。

In the below query, we defined a variable @DataArray and defined an array to have multiple values.

在下面的查询中,我们定义了一个变量@DataArray并定义了一个具有多个值的数组。

DECLARE @OriginalJSON NVARCHAR(4000)
DECLARE @DataArray NVARCHAR(256) = N'["Keyboard","Mouse","Monitor"]';
Set @OriginalJSON='{"Brand":"HP","Product":"Laptop"}'
Select@OriginalJSON as 'Before Update',JSON_MODIFY(@OriginalJSON,'$.Accessories',@DataArray) AS 'Updated JSON';

In the output, we verify that it adds a new node in JSON data, but we see a backslash symbol for each element in the array. It is not the desired JSON array. We need to use another JSON function JSON_QUERY() to insert an array using the JSON_MODIFY() function.

在输出中,我们确认它在JSON数据中添加了一个新节点,但是我们在数组中的每个元素上看到一个反斜杠符号。 它不是所需的JSON数组。 我们需要使用另一个JSON函数JSON_QUERY()来使用JSON_MODIFY()函数插入数组。

DECLARE @OriginalJSON NVARCHAR(4000)
DECLARE @DataArray NVARCHAR(256) = N'["Keyboard","Mouse","Monitor"]';
Set @OriginalJSON='{"Brand":"HP","Product":"Laptop"}'
Select@OriginalJSON as 'Before Update',JSON_MODIFY(@OriginalJSON,'$.Accessories',JSON_Query(@DataArray)) AS 'Updated JSON';

We get the property array in the output after using the JSON_QUERY() function.

使用JSON_QUERY()函数后,我们在输出中获得属性数组。

示例5:将值附加到JSON数组 (Example 5: Append a value to JSON array)

In the previous example, we inserted a new array in the JSON string. Suppose we want to insert a new value in the existing JSON array. We can use JSON_MODIFY() function for this as well.

在前面的示例中,我们在JSON字符串中插入了一个新数组。 假设我们要在现有的JSON数组中插入一个新值。 我们也可以为此使用JSON_MODIFY()函数。

In the below query, we insert Printer in the accessories array. For this purpose, we use argument Append before the array property.

在以下查询中,我们将Printers插入附件阵列。 为此,我们在数组属性之前使用参数Append

DECLARE @OriginalJSON NVARCHAR(4000)
Set @OriginalJSON='{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}'
Select@OriginalJSON as 'Before Update',JSON_MODIFY(@OriginalJSON,'append $.Accessories','Printer') AS 'Updated JSON';

You can look for additional value in the updated JSON.

您可以在更新的JSON中查找其他值。

示例6:在JSON数据中附加一个JSON对象 (Example 6: Append a JSON object in the JSON data)

We can have a nested JSON object as well inside a JSON. For example, a JSON string can contain another JSON string in its property.

我们可以在JSON中也有嵌套的JSON对象。 例如,一个JSON字符串可以在其属性中包含另一个JSON字符串。

For example, suppose we want to add a JSON object that contains seller information in the existing JSON. We need to specify the new JSON in the third parameter. For simplicity purposes, it’s better to declare a variable and contain JSON into it similar to the below code.

例如,假设我们要在现有JSON中添加一个包含卖方信息的JSON对象。 我们需要在第三个参数中指定新的JSON。 为了简单起见,最好声明一个变量并将JSON包含在其中,类似于下面的代码。

DECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}';
SET @newjson = '{"Seller":"ABC corp","Buyer":"XYZ corp"}';
SELECT @OriginalJSON AS 'Before Update', JSON_MODIFY(@OriginalJSON, '$.SellerBuyer', @newjson) AS 'Updated JSON';

In the above query output, we see that SQL Server escaped double-quotes and we get backslash in the new JSON. As highlighted earlier, we can use JSON_QUERY() function and get the valid JSON output, as shown below.

在上面的查询输出中,我们看到SQL Server转义了双引号,并且在新JSON中得到了反斜杠。 如前所述,我们可以使用JSON_QUERY()函数并获取有效的JSON输出,如下所示。

DECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}';
SET @newjson = '{"Seller":"ABC corp","Buyer":"XYZ corp"}';
SELECT @OriginalJSON AS 'Before Update', JSON_MODIFY(@OriginalJSON, '$.SellerBuyer', JSON_QUERY(@newjson)) AS 'Updated JSON';

In the below code, we have an existing array [Accessories] with few values. Let’s add the new JSON into this Accessories array. For this purpose, we use append argument along with the [$. Accessories ] in the second argument. You can view the output shows JSON in the array.

在下面的代码中,我们有一个带有很少值的现有数组[ Accessories] 。 让我们将新的JSON添加到此Accessories数组中。 为此,我们将append参数与[$一起使用。 附件]中的第二个参数。 您可以查看输出显示数组中的JSON。

DECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}';
SET @newjson = '{"Seller":"ABC corp","Buyer":"XYZ corp"}';
SELECT @OriginalJSON AS 'Before Update', JSON_MODIFY(@OriginalJSON, 'append $.Accessories', JSON_QUERY(@newjson)) AS 'Updated JSON';

示例7:删除JSON属性 (Example 7: Removing a JSON property)

Sometimes, we may want to remove an existing JSON property. To remove a JSON node or property, pass the NULL value in the third argument. We can also remove a specific value from the JSON array.

有时,我们可能想删除现有的JSON属性。 要删除JSON节点或属性,请在第三个参数中传递NULL值。 我们还可以从JSON数组中删除特定值。

In the below query, we want to remove the keyboard from the Accessories array. We specify the following in the query.

在下面的查询中,我们要从配件阵列中删除键盘。 我们在查询中指定以下内容。

  • $.Accessories[0] $ .Accessories [0]
  • Specify a NULL value in the third argument 在第三个参数中指定一个NULL值
DECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}';
SELECT @OriginalJSON AS 'Before Update', JSON_MODIFY(@OriginalJSON, '$.Accessories[0]', NULL) AS 'Updated JSON';

Once we execute the above JSON script, it replaced the array element with NULL. Are we ok with this NULL value? No, Right!

一旦执行了上述JSON脚本,它就会将数组元素替换为NULL。 我们可以接受这个NULL值吗? 无权利!

  • JSON_MODIFY() should not replace a value with a NULL value JSON_MODIFY()不应将值替换为NULL值
  • It should obliterate the element 它应该消除元素

We can replace the array with a new set of values. It helps to eliminate NULL values in the output.

我们可以用一组新值替换数组。 它有助于消除输出中的NULL值。

In the below query, we replaced the existing array with a new array that does not contain the element we do not require.

在下面的查询中,我们用不包含我们不需要的元素的新数组替换了现有数组。

DECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}';
set @newjson='["Mouse","Monitor"]'
SELECT @OriginalJSON AS 'Before Update', JSON_MODIFY(@OriginalJSON, '$.Accessories', JSON_Query(@newjson)) AS 'Updated JSON';

In the output, we can verify that replacing an array solved the problem.

在输出中,我们可以验证替换数组是否可以解决问题。

In the below query, we remove Products property from the JSON data. We do not get NULL value in the output in this case, and it removed the node as shown below.

在下面的查询中,我们从JSON数据中删除Products属性。 在这种情况下,我们不会在输出中获得NULL值,它如下所示删除了该节点。

DECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}';
SELECT @OriginalJSON AS 'Before Update', JSON_MODIFY(@OriginalJSON, '$.Product', NULL) AS 'Updated JSON';

示例8:更新一个JSON属性 (Example 8: Update a JSON property)

We can update an existing property using the JSON_MODIFY() function as well. For example, suppose someone entered the wrong value in the Accessories array in the zero position. The below code updates the element with a new specified value.

我们也可以使用JSON_MODIFY()函数更新现有属性。 例如,假设有人在“附件”数组中的零位置输入了错误的值。 以下代码使用新的指定值更新元素。

DECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}';
set @newjson='Printer'
SELECT @OriginalJSON AS 'Before Update', JSON_MODIFY(@OriginalJSON, '$.Accessories[0]', @newjson) AS 'Updated JSON';

Imagine what is the output of the below code. Here, we try to update an array element, but the array does not exist in the JSON data.

想象以下代码的输出是什么。 在这里,我们尝试更新一个数组元素,但是该数组在JSON数据中不存在。

DECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}';
set @newjson='Printer'
SELECT @OriginalJSON AS 'Before Update', JSON_MODIFY(@OriginalJSON, '$.Company[0]', @newjson) AS 'Updated JSON';

We do not get any error message. It shows similar JSON in both original and updated JSON. You should recall here that by default, JSON_MODIFY() function uses lax path mode.

我们没有收到任何错误消息。 它在原始和更新的JSON中都显示类似的JSON。 您应该在这里回忆起,默认情况下,JSON_MODIFY()函数使用宽松路径模式。

If we rerun the previous code with a small change. We modified path mode from lax to strict. This time it does not work and complains about invalid property in the JSON path.

如果我们稍做改动就重新运行先前的代码。 我们将路径模式从宽松改为严格。 这次它不起作用,并抱怨JSON路径中的无效属性。

DECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}';
set @newjson='Printer'
SELECT @OriginalJSON AS 'Before Update', JSON_MODIFY(@OriginalJSON, '$.Company[0]', @newjson) AS 'Updated JSON';

示例9:重命名密钥 (Example 9: Rename a Key)

We have seen many use cases of JSON_MODIFY() function in the previous examples. Suppose, you want to rename a key available in the JSON Data. It is like rename an existing column in a relational database table.

在前面的示例中,我们已经看到了JSON_MODIFY()函数的许多用例。 假设您想重命名JSON数据中可用的密钥。 就像重命名关系数据库表中的现有列一样。

In the below code, we use Nested JSON_MODIFY() functions along with a combination of JSON_VALUE function. Look at the query carefully. We created a new key and dropped the existing key after copying the value in it. It is a little complicated, but JSON_MODIFY() does not have a direct option to rename a key.

在下面的代码中,我们使用嵌套的JSON_MODIFY()函数以及JSON_VALUE函数的组合。 仔细查看查询。 我们创建了一个新密钥,并在复制其中的值后删除了现有密钥。 这有点复杂,但是JSON_MODIFY()没有直接选择重命名密钥的选项。

DECLARE @OriginalJSON NVARCHAR(4000)
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop"}';
SELECT @OriginalJSON AS 'Before Update', JSON_MODIFY(JSON_MODIFY(@OriginalJSON, '$.Parts', JSON_VALUE(@OriginalJSON,'$.Product')),'$.Product',NULL);

示例10:多项更改 (Example 10: Multiple changes)

We can perform multiple changes in the JSON data. JSON_MODIFY() does not support multiple updates in a single function call. To overcome this problem, we can use nested JSON_MODIFY() functions.

我们可以在JSON数据中执行多项更改。 JSON_MODIFY()在单个函数调用中不支持多个更新。 为了克服这个问题,我们可以使用嵌套的JSON_MODIFY()函数。

In the below query, we update the following values.

在下面的查询中,我们更新以下值。

  • It updates the contents of the JSON array 它更新JSON数组的内容
  • It updates the value for the Product key 它更新产品密钥的值
DECLARE @OriginalJSON NVARCHAR(4000), @newjson VARCHAR(100);
SET @OriginalJSON = '{"Brand":"HP","Product":"Laptop","Accessories":["Keyboard","Mouse","Monitor"]}';
SET @newjson = '["HDMI","USB"]';
SELECT @OriginalJSON AS 'Source JSON', JSON_MODIFY(JSON_MODIFY(@OriginalJSON, '$.Accessories', JSON_QUERY(@newjson)), '$.Brand', 'Lenovo') AS 'Updated JSON';

结论 (Conclusion)

In this article, we overviewed JSON_MODIFY() function and its usage to update JSON data using various examples. I hope it should be a knowledge article for you to understand the JSON function – JSON_MODIFY().

在本文中,我们使用各种示例概述了JSON_MODIFY()函数及其在更新JSON数据中的用法。 我希望这应该是一本知识文章,让您了解JSON函数– JSON_MODIFY()。

翻译自: https://www.sqlshack.com/modifying-json-data-using-json_modify-in-sql-server/

modify sql

modify sql_在SQL Server中使用JSON_MODIFY()修改JSON数据相关推荐

  1. percent sql_使用SQL Server中的PERCENT_RANK函数计算SQL百分位数

    percent sql This article explores the SQL Server PERCENT_RANK analytical function to calculate SQL P ...

  2. 在SQL Server中sqlserver,access,excel之间数据如何使用sql语句直接操作

    所谓的数据传输,其实是指SQLServer访问Access.Excel间的数据. 为什么要考虑到这个问题呢? 由于历史的原因,客户以前的数据很多都是在存入在文本数据库中,如Acess.Excel.Fo ...

  3. SQL server 中的插入表行数据,以及插入标识值

    语法介绍 (1)在SQL server数据库中我们如何添加新的行,并且添加数据呢? Insert:该语句向表中添加新行 values: 要插入的值 语法如下: Insert into 模式.表名(字段 ...

  4. SQL Server中的报表–如何使用数据透视表和日期计算来获取有价值的报表

    介绍 (Introduction) A few months back I had been working on an interesting proof of concept for a huma ...

  5. isnull pivot server sql_使用SQL Server中的“Pivot”将行转换为列

    我正在编写一个可能对此有用的sp,基本上这个sp会旋转任何表并返回一个新的表,或仅返回数据集,这是执行它的方法: Exec dbo.rs_pivot_table @schema=dbo,@table= ...

  6. Sql Server中两个表之间数据备份和导入

    备份表SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename 必须显示的表名字段名:SET ...

  7. c# mysql 触发器 实时,C#-.Net SqlDataAdapter和SQL Server中的触发器

    我在SQL Server中使用触发器,该触发器在SQL Server Management Studio的查询窗口中执行查询时按要求工作.触发器的目的是从一个表中获取最新值(其中一个ID对应于插入的I ...

  8. sql server中创建数据库和表的语法

    下面是sql server中创建数据库,创建数据表以及添加约束的sql语句: use master --创建数据库 if exists (select * from sysdatabases wher ...

  9. 到T-SQL DML 三级的阶梯:在SQL server中实现关系模型

    作者: Gregory Larsen, 2017/08/02 (第一次出版: 2011/11/09) 翻译:谢雪妮,许雅莉,赖慧芳,刘琼滨 译文: 系列 该文章是阶梯系列的一部分:T-SQL DML的 ...

最新文章

  1. 交叉驰豫的影响因素_交叉滚子轴承系列吉林薄壁交叉滚子轴承用途博盈
  2. Ubuntu16.04下面壁纸切换软件variety设置
  3. ArcEngine中实现对符号的预览图输出
  4. Unity3d面向英特尔 x86 平台的 Unity* 优化指南: 第 2 部分
  5. 20200210_logistic回归来预测违约的概率
  6. 中标麒麟Linux安装微信,中标麒麟微信群,剧透中标麒麟7.0
  7. 支付宝提现额度又降了...
  8. httpwatch使用,浏览器内HTTP嗅探器
  9. vc 调用webservice
  10. 在线客服系统解决方案:游戏行业
  11. FRM P1B4笔记:Valuation and Risk Models
  12. 北斗终端与计算机传输信息,北斗短报文船载终端,北斗卫星海上通信终端问世,海上作业再也不怕失联...
  13. NVIDIA TX2 使能CAN模块
  14. PLM,是一个英文缩写,有2个含义,一是表示产品生命周期管理(product lifecycle management,PLM),...
  15. Golang 判断IPv4和IPv6是否合法
  16. PLC梯形图编程实战【逻辑实现】
  17. matlab调用com,com方式调用matlab(四)
  18. DELL 15R 7520 UEFI引导Clover安装Yosemite 10.10.2实录,基本完美
  19. 基于canvas实现温度热力图,温度云图(一)--实现温度分布图
  20. 动态规划——1262:【例9.6】挖地雷

热门文章

  1. oracle异构迁移,异构数据库系统迁移到Oracle 工具 - Oracle SQL Developer
  2. 小程序上传服务器图片压缩,微信小程序压缩图片并上传到服务器(拿去即用)...
  3. H3C 典型数据链路层标准
  4. JPA学习笔记二——Hello World
  5. smarty模板基础2 缓存文件
  6. PHP加密解密函数之Base64
  7. springMVC get 提交乱码
  8. 前端—每天5道面试题(7)
  9. 夜班工作有哪些优缺点?
  10. 离职证明(解除劳动合同书)是否会毁你一生?