作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有一个名为 value
的 nvarchar(100) 列,当用户插入该列时,我需要在触发器中检查下面的代码:
if exists
(
select *
from inserted i
where isnumeric(value)=0
)
begin
rollback transaction
raiserror('when productType is numeric, You have to insert numeric character',18,1)
return
end
但是在以波斯语插入的应用程序界面数字中,所以总是isnumeric(value)=0
。
例如,如果用户在界面中插入 45
,我需要将触发值显示为 45
。
到目前为止,我使用了CAST
、CONVERT
和collate Persian_100_CI_AI
,但我无法得到任何结果。
谢谢。
最佳答案
哪个版本的SQL Server
? v2017+ 提供了一个 new function TRANSLATE
.
可能有一种更优雅但更实用的方式:
DECLARE @PersianNumber NVARCHAR(100)=N'۴۵';
SELECT CAST(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
(@PersianNumber,N'۰',N'0'),N'۱',N'1'),N'۲',N'2'),N'۳',N'3'),N'۴',N'4')
,N'۵',N'5'),N'۶',N'6'),N'۷',N'7'),N'۸',N'8'),N'۹',N'9') AS INT);
关于sql - 如何将波斯数字转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49511465/
我是一名优秀的程序员,十分优秀!