sql-server - 在 SQL Server 中使用子字符串时的转换问题
问题描述
我正在尝试根据某些条件使用同一数据表中的其他列值更新列值(检查字段末尾是否有 .pdf)。在更新列值时,我必须删除 .pdf 然后分配,因此使用 SUBSTRING() 相同。
Update Table_name
Set col_1 = SUBSTRING(col_2, 1, LEN(col_2 - 4))
Where col_2 like '%.pdf%'
但我得到一个错误
将 nvarchar 值 default.pdf 转换为数据类型 int 时转换失败
注意:col_1
两者col_2
都是类型nvarchar(255)
解决方案
您的 LEN 计算存在语法错误。LEN(col_2) - 4)
而不是LEN(col_2 - 4)
:
SQL 正在尝试将 col_2 转换为 INT 以在应用 LEN 函数之前首先计算 col_2 - 4。首先,获取返回 INT 的 LEN(col_2),然后减去 2。
解决方案:
UPDATE Table_name
SET col_1 = SUBSTRING(col_2, 1, LEN(col_2) - 4)
WHERE col_2 LIKE '%.pdf%'
推荐阅读
- google-bigquery - BQ PY 客户端库 :: client.run_async_query() 与 client.run_sync_query()
- html - HTML 表单 - 多部分/表单数据
- ios - 带有 InAppPurchase 和 2 个目标的 iOS 应用
- javascript - 使用 SequelizeJS 和 PostgreSQL 实现 .bulkCreate() 时如何在 1:M 关系中使用外键
- python - 我应该如何在 python2.7 中打印我的输出结果
- python - 如何在python中使用spark对json文件进行排序?
- java - 为什么我的闹钟无法使用 BOOT_COMPLETED
- kubernetes - 如何在 IBM Kubernetes 服务中启用 IPV6 支持
- c# - 当多个实体派生自一个公共实体并保存在同一个表中时,如何按实体查询对象
- php - Composer:如何忽略某些依赖项的安装/更新?